Skip to contentSkip to conversation

system/init: add option for no init system

PATCH New Yann E. MORIN 5 participants 65 messages Aug 12, 2012 – Aug 28, 2012

lore
Share & tools
lore
#0 lore raw

PATCH 1/36 system/init: add option for no init system

Can be usefull if a local package provides an init procedure.

---
 target/generic/Config.in |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)
target/generic/Config.in +3 -0
index a83ba44..b8472f4 100644
@@ -64,6 +64,9 @@ comment 'systemd requires largefile, wchar, IPv6, threads and udev support'
 		     BR2_INET_IPV6 && BR2_TOOLCHAIN_HAS_THREADS && \
 		     BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV)
 
+config BR2_INIT_NONE
+	bool "None"
+
 endchoice
 
 config BR2_ROOTFS_DEVICE_TABLE
Signature · 1 line
1.7.2.5
#1 lore raw

PATCH 1/36 system/init: add option for no init system

Thomas, All,

Sorry, I forgot an intro mail... Here it is:

This series is an attempt to add QEMU as a package.

It first tries to fix a few short-comings I encounterd:
patches 1 & 2

It then adds a few new packages that are dependencies of QEMU, some optional:
patches 3 to 10

Then it adds QEMU as a new package, with everything disabled:
patch 11

Then it adds a few config options to QEMU, to enable/disable some features:
patches 12 to 34

And finally it moves QEMU options to a sub-menu:
patch 35

A last patch, which I'd like feedback on, enables building static QEMU executables:
patch 36

Regards,
Yann E. MORIN.

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#2 lore raw

PATCH 2/36 package/sdl: add symlink to sdl-config

In reply to Yann E. MORIN

SDL installs a script-based sdl-config in the sysroot, but some packages (eg. QEMU) needs it to be either:
- prefixed with the cross-prefix
- in the PATH

So, as sdl-config is a script, and although it is installed in the sysroot, it can be run on the host.

---
 package/sdl/sdl.mk |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)
package/sdl/sdl.mk +2 -0
index 139312f..c499562 100644
@@ -66,6 +66,8 @@ define SDL_FIXUP_SDL_CONFIG
 		$(STAGING_DIR)/usr/bin/sdl-config
 	$(SED) 's%-Wl,-rpath,\$${libdir}%%' \
 		$(STAGING_DIR)/usr/bin/sdl-config
+	$(HOSTLN) -s $(STAGING_DIR)/usr/bin/sdl-config \
+	             $(HOST_DIR)/usr/bin/sdl-config
 endef
 
 SDL_POST_INSTALL_STAGING_HOOKS+=SDL_FIXUP_SDL_CONFIG
Signature · 1 line
1.7.2.5
#3 lore raw

PATCH 2/36 package/sdl: add symlink to sdl-config

Le Mon, 13 Aug 2012 01:53:50 +0200,
"Yann E. MORIN" <[email protected]> a ?crit :

Quoted 7 lines

SDL installs a script-based sdl-config in the sysroot, but some packages (eg. QEMU) needs it to be either:
- prefixed with the cross-prefix
- in the PATH

So, as sdl-config is a script, and although it is installed in the sysroot, it can be run on the host.

Well, that's typically not how we handle this problem. In general, we pass the complete location of the <foo>-config script to the ./configure script of the package that needs it. I would prefer if we could use this solution everywhere instead of having a different solution in different places for the same problem. Do you know if it would be possible with Qemu?

Thanks!

Thomas

Signature · 4 lines
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
#4 lore raw

PATCH 2/36 package/sdl: add symlink to sdl-config

Thomas, All,

Quoted 8 lines · On Monday 13 August 2012 12:57:10 Thomas Petazzoni wrote:

Le Mon, 13 Aug 2012 01:53:50 +0200,
"Yann E. MORIN" <[email protected]> a ?crit :

Quoted 5 lines

SDL installs a script-based sdl-config in the sysroot, but some packages (eg. QEMU) needs it to be either:
- prefixed with the cross-prefix
- in the PATH

Quoted 6 lines
Quoted 2 lines

So, as sdl-config is a script, and although it is installed in the sysroot, it can be run on the host.

Well, that's typically not how we handle this problem. In general, we pass the complete location of the <foo>-config script to the ./configure script of the package that needs it.

Yep, I knew this one would raise eyebrows. ;-)

Quoted 3 lines

I would prefer if
we could use this solution everywhere instead of having a different solution in different places for the same problem.

But still, is it the right solution to use the sdl-config, although it is installed in staging?

Quoted 2 lines

Do you know if it
would be possible with Qemu?

Ah, looking further, there's SDL_CONFIG we can set (I missed it...) Will fix.

Regards,
Yann E. MORIN.

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +0/33 662376056 | Software  Designer | \ / CAMPAIGN     |   ^                |
| --==< O_o >==-- '------------.-------:  X  AGAINST      |  /e\  There is no  |
| http://ymorin.is-a-geek.org/ | (*_*) | / \ HTML MAIL    |  """  conspiracy.  |
'------------------------------'-------'------------------'--------------------'
#5 lore raw

PATCH 2/36 package/sdl: add symlink to sdl-config

In reply to Thomas Petazzoni
Quoted 8 lines · Thomas Petazzoni

Le Mon, 13 Aug 2012 01:53:50 +0200,
"Yann E. MORIN"<[email protected]> a ?crit :

Quoted 5 lines
Quoted 5 lines

SDL installs a script-based sdl-config in the sysroot, but some packages (eg. QEMU) needs it to be either:
- prefixed with the cross-prefix
- in the PATH

Quoted 7 lines
Quoted 2 lines
Quoted 2 lines

So, as sdl-config is a script, and although it is installed in the sysroot, it can be run on the host.

Well, that's typically not how we handle this problem. In general, we pass the complete location of the<foo>-config script to
the ./configure script of the package that needs it. I would prefer if we could use this solution everywhere instead of having a different solution in different places for the same problem.

Although I fully agree with using the same pattern everywhere, I think the
pattern is wrong here. Having a xxx-config script is supposed to make it easy to discover a package; if you have to point to it explicitly in the package.mk using it, that kind of defeats the purpose.

Of course, even so it is still shaky. If the xxx-config has to be looked up
from the PATH, we risk picking up /usr/bin/xxx-config... In an ideal world, they'd all be using pkg-config... But in an ideal work we probably wouldn't even need buildroot :-)

Regards,
Arnout

Signature · 6 lines
Arnout Vandecappelle                               arnout at mind be
Senior Embedded Software Architect                 +32-16-286540
Essensium/Mind                                     http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium                BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
#6 lore raw

PATCH 3/36 package/libfdt: new package

In reply to Yann E. MORIN

libfdt allows one to manipulate a Flat Device Tree.

---
 package/Config.in                                  |    1 +
 package/libfdt/Config.in                           |    6 ++
 .../libfdt/libfdt-install-missing-headers.patch    |   22 ++++++++
 package/libfdt/libfdt-separate-lib-install.patch   |   22 ++++++++
 package/libfdt/libfdt.mk                           |   56 ++++++++++++++++++++
 5 files changed, 107 insertions(+), 0 deletions(-)
 create mode 100644 package/libfdt/Config.in
 create mode 100644 package/libfdt/libfdt-install-missing-headers.patch
 create mode 100644 package/libfdt/libfdt-separate-lib-install.patch
 create mode 100644 package/libfdt/libfdt.mk
package/Config.in +1 -0
index f308de7..f139e29 100644
@@ -375,6 +375,7 @@ source "package/libaio/Config.in"
 source "package/libraw1394/Config.in"
 source "package/tslib/Config.in"
 source "package/libfreefare/Config.in"
+source "package/libfdt/Config.in"
 source "package/libftdi/Config.in"
 source "package/libhid/Config.in"
 source "package/libiqrf/Config.in"
package/libfdt/Config.in new file +6 -0
new file mode 100644
index 0000000..fe215b3
@@ -0,0 +1,6 @@
+config BR2_PACKAGE_LIBFDT
+	bool "libfdt"
+	help
+	  libfdt if a library to manipulate Flat Device Trees.
+	  
+	  http://git.jdl.com/gitweb/?p=dtc.git  (no home page)
package/libfdt/libfdt-install-missing-headers.patch new file +22 -0
new file mode 100644
index 0000000..b15d376
@@ -0,0 +1,22 @@
+libfdt: install missing header
+
+Previously, only two headers were installed: libfdt.h and fdt.h.
+But libfdt.h also #includes libfdt_env.h, which was not installed.
+
+Install this missing header too.
+
+Signed-off-by: "Yann E. MORIN" <[email protected]>
+
+diff --git a/libfdt/Makefile.libfdt b/libfdt/Makefile.libfdt
+index d55a6f8..94c1e35 100644
+--- a/libfdt/Makefile.libfdt
++++ b/libfdt/Makefile.libfdt
+@@ -4,7 +4,7 @@
+ # be easily embeddable into other systems of Makefiles.
+ #
+ LIBFDT_soname = libfdt.$(SHAREDLIB_EXT).1
+-LIBFDT_INCLUDES = fdt.h libfdt.h
++LIBFDT_INCLUDES = fdt.h libfdt.h libfdt_env.h
+ LIBFDT_VERSION = version.lds
+ LIBFDT_SRCS = fdt.c fdt_ro.c fdt_wip.c fdt_sw.c fdt_rw.c fdt_strerror.c
+ LIBFDT_OBJS = $(LIBFDT_SRCS:%.c=%.o)
package/libfdt/libfdt-separate-lib-install.patch new file +22 -0
new file mode 100644
index 0000000..5a0157d
@@ -0,0 +1,22 @@
+Makefile: add a rule to only install libfdt
+
+Signed-off-by: "Yann E. MORIN" <[email protected]>
+
+diff --git a/Makefile b/Makefile
+index 1169e6c..39e7190 100644
+--- a/Makefile
++++ b/Makefile
+@@ -156,10 +156,12 @@ endif
+ # intermediate target and building them again "for real"
+ .SECONDARY: $(DTC_GEN_SRCS) $(CONVERT_GEN_SRCS)
+ 
+-install: all $(SCRIPTS)
++install: all $(SCRIPTS) libfdt_install
+ 	@$(VECHO) INSTALL
+ 	$(INSTALL) -d $(DESTDIR)$(BINDIR)
+ 	$(INSTALL) $(BIN) $(SCRIPTS) $(DESTDIR)$(BINDIR)
++
++libfdt_install: libfdt
+ 	$(INSTALL) -d $(DESTDIR)$(LIBDIR)
+ 	$(INSTALL) $(LIBFDT_lib) $(DESTDIR)$(LIBDIR)
+ 	ln -sf $(notdir $(LIBFDT_lib)) $(DESTDIR)$(LIBDIR)/$(LIBFDT_soname)
package/libfdt/libfdt.mk new file +56 -0

56 lines not on this page · raw message

Signature · 1 line
1.7.2.5
#7 lore raw

PATCH 3/36 package/libfdt: new package

Hello,

Le Mon, 13 Aug 2012 01:53:51 +0200,
"Yann E. MORIN" <[email protected]> a ?crit :

Quoted 10 lines

libfdt allows one to manipulate a Flat Device Tree.

---
 package/Config.in                                  |    1 +
 package/libfdt/Config.in                           |    6 ++
 .../libfdt/libfdt-install-missing-headers.patch    |   22 ++++++++
 package/libfdt/libfdt-separate-lib-install.patch   |   22 ++++++++
 package/libfdt/libfdt.mk                           |   56 ++++++++++++++++++++
 5 files changed, 107 insertions(+), 0 deletions(-)

The upstream package is called "dtc", shouldn't we be calling this package "dtc" as well even though it only installs libfdt for now?

package/libfdt/libfdt.mk line 2

Quoted 8 lines
package/libfdt/libfdt.mk new file +2 -0
new file mode 100644
index 0000000..6824576
@@ -0,0 +1,56 @@
+#-----------------------------------------------------------------------------
+# Package description

While this headers are nice, they are not consistent with all other packages in Buildroot. Do we want to move all packages in this direction?

package/libfdt/libfdt.mk line 9

Quoted 6 lines
package/libfdt/libfdt.mk new file +6 -0
+LIBFDT_VERSION         = v1.3.0
+LIBFDT_SITE            = git://git.jdl.com/software/dtc.git
+LIBFDT_LICENSE         = GPLv2+/BSD-2c
+LIBFDT_LICENSE_FILES   = README.license GPL
+# Note: the dual-license only applies to the library.
+#       The DT compiler (dtc) is GPLv2+, but we do not install it (yet?).

Argh, this is getting complicated, and shows again that our lack of separation between "source package" and "binary package" is a bit problematic.

package/libfdt/libfdt.mk line 17

Quoted 8 lines
package/libfdt/libfdt.mk new file +8 -0
+LIBFDT_INSTALL_STAGING = YES
+
+#----------------------------------------------------------------------------
+# Package build process
+
+define LIBFDT_BUILD_CMDS
+	$(MAKE) -C $(@D) CC="$(TARGET_CC)" \
+	                 AR="$(TARGET_AR)" \

What about using $(TARGET_CONFIGURE_OPTS) instead?

package/libfdt/libfdt.mk line 24

Quoted 7 lines
package/libfdt/libfdt.mk new file +7 -0
+	                 PREFIX=/usr       \
+	                 libfdt
+endef
+
+#?libfdt_install is our own install rule added by our patch
+define LIBFDT_INSTALL_STAGING_CMDS
+	$(MAKE) CC="$(TARGET_CC)" AR="$(TARGET_AR)" -C $(@D) \

Do you really need to repeat CC and AR for the installation?

Quoted 12 lines
package/libfdt/libfdt.mk new file +12 -0
+	        DESTDIR=$(STAGING_DIR) PREFIX=/usr           \
+	        libfdt_install
+endef
+
+# libfdt does not have any uninstall rule
+define LIBFDT_UNINSTALL_STAGING_CMDS
+	rm -f $(STAGING_DIR)/usr/lib/libfdt.a
+	rm -f $(STAGING_DIR)/usr/lib/libfdt*.so*
+	rm -f $(STAGING_DIR)/usr/include/libfdt*.h
+	rm -f $(STAGING_DIR)/usr/include/fdt.h
+endef
+

package/libfdt/libfdt.mk line 46

Quoted 10 lines
package/libfdt/libfdt.mk new file +10 -0
+# Usually, mode 0644 is enough for libraries (shared or static), but the
+# buildroot documentation dsays 0755, so be dumb and follow the docs. ;-p
+# And on target, we only require the SONAME-named library, not all the
+# symlinks, but:
+#   - libfdt's Makefile does not offer such a rule,
+#   - other buildroot packages do install lib symlinks,
+# so do as all others do.
+define LIBFDT_INSTALL_TARGET_CMDS
+	$(INSTALL) -D -m 0755 $(@D)/libfdt/libfdt*.so* $(TARGET_DIR)/usr/lib
+endef

Not possible to use 'make libfdt_install' here? Remember that Buildroot automatically .a files, header files and other documentation, so you don't have to do this "filtered" installation yourself. And worse than
that: if you have BR2_HAVE_DEVFILES enabled, your INSTALL_TARGET_CMDS is incorrect.

Thanks!

Thomas

Signature · 4 lines
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
#8 lore raw

PATCH 3/36 package/libfdt: new package

Thomas, All,

Quoted 14 lines · On Tuesday 14 August 2012 15:23:40 Thomas Petazzoni wrote:

Le Mon, 13 Aug 2012 01:53:51 +0200,
"Yann E. MORIN" <[email protected]> a ?crit :

Quoted 10 lines

libfdt allows one to manipulate a Flat Device Tree.

---
 package/Config.in                                  |    1 +
 package/libfdt/Config.in                           |    6 ++
 .../libfdt/libfdt-install-missing-headers.patch    |   22 ++++++++
 package/libfdt/libfdt-separate-lib-install.patch   |   22 ++++++++
 package/libfdt/libfdt.mk                           |   56 ++++++++++++++++++++
 5 files changed, 107 insertions(+), 0 deletions(-)
Quoted 2 lines

The upstream package is called "dtc", shouldn't we be calling this package "dtc" as well even though it only installs libfdt for now?

OK.

Quoted 4 lines
Quoted 4 lines
package/libfdt/libfdt.mk new file +0 -1
new file mode 100644
index 0000000..6824576
--- /dev/null
Quoted 8 lines

package/libfdt/libfdt.mk line 2

Quoted 4 lines

+++ b/package/libfdt/libfdt.mk

package/libfdt/libfdt.mk new file +2 -0
@@ -0,0 +1,56 @@
+#-----------------------------------------------------------------------------
+# Package description

While this headers are nice, they are not consistent with all other packages in Buildroot. Do we want to move all packages in this direction?

I'll remove them.
That's just that I like to preperly lay things out.

Quoted 10 lines

package/libfdt/libfdt.mk line 9

Quoted 6 lines
package/libfdt/libfdt.mk new file +6 -0
+LIBFDT_VERSION         = v1.3.0
+LIBFDT_SITE            = git://git.jdl.com/software/dtc.git
+LIBFDT_LICENSE         = GPLv2+/BSD-2c
+LIBFDT_LICENSE_FILES   = README.license GPL
+# Note: the dual-license only applies to the library.
+#       The DT compiler (dtc) is GPLv2+, but we do not install it (yet?).

Argh, this is getting complicated, and shows again that our lack of separation between "source package" and "binary package" is a bit problematic.

So, what should I do here:
1- list all licenses, even those not used, or
2- only list licenses actually used?

1 is easy, while it is not exact, and 2 is relatively easy, but does not guarantee exactitude. So, probably 1 is better in this case.

After all, the licensing report is not supposed to be ultimately trusted, but is supposed to be reviewed by a human being for correctness.

Quoted 10 lines

package/libfdt/libfdt.mk line 17

Quoted 8 lines
package/libfdt/libfdt.mk new file +8 -0
+LIBFDT_INSTALL_STAGING = YES
+
+#----------------------------------------------------------------------------
+# Package build process
+
+define LIBFDT_BUILD_CMDS
+	$(MAKE) -C $(@D) CC="$(TARGET_CC)" \
+	                 AR="$(TARGET_AR)" \

What about using $(TARGET_CONFIGURE_OPTS) instead?

IIRC, I tried, and it did not work.
I'll doiuble-check before resubnitting (and add a comment saying why it's not possible in this case).

Quoted 9 lines

package/libfdt/libfdt.mk line 24

Quoted 7 lines
package/libfdt/libfdt.mk new file +7 -0
+	                 PREFIX=/usr       \
+	                 libfdt
+endef
+
+# libfdt_install is our own install rule added by our patch
+define LIBFDT_INSTALL_STAGING_CMDS
+	$(MAKE) CC="$(TARGET_CC)" AR="$(TARGET_AR)" -C $(@D) \

Do you really need to repeat CC and AR for the installation?

Probably not. It worked as is, so I went on with the next task on my TODO list.

I'll double-check too (and comment).

Quoted 16 lines
Quoted 16 lines
package/libfdt/libfdt.mk new file +16 -0
+	        DESTDIR=$(STAGING_DIR) PREFIX=/usr           \
+	        libfdt_install
+endef
+
+# libfdt does not have any uninstall rule
+define LIBFDT_UNINSTALL_STAGING_CMDS
+	rm -f $(STAGING_DIR)/usr/lib/libfdt.a
+	rm -f $(STAGING_DIR)/usr/lib/libfdt*.so*
+	rm -f $(STAGING_DIR)/usr/include/libfdt*.h
+	rm -f $(STAGING_DIR)/usr/include/fdt.h
+endef
+
+# Usually, mode 0644 is enough for libraries (shared or static), but the
+# buildroot documentation dsays 0755, so be dumb and follow the docs. ;-p
+# And on target, we only require the SONAME-named library, not all the
+# symlinks, but:
Quoted 8 lines

package/libfdt/libfdt.mk line 46

Quoted 6 lines
package/libfdt/libfdt.mk new file +6 -0
+#   - libfdt's Makefile does not offer such a rule,
+#   - other buildroot packages do install lib symlinks,
+# so do as all others do.
+define LIBFDT_INSTALL_TARGET_CMDS
+	$(INSTALL) -D -m 0755 $(@D)/libfdt/libfdt*.so* $(TARGET_DIR)/usr/lib
+endef

Not possible to use 'make libfdt_install' here?

Hmm. And I added a patch to that effect... Sigh... Yes, will do.

Quoted 1 line

Remember that Buildroot automatically .a files, header files and other

I guess you meant 'remove' here ---^^^ ;-)

Quoted 3 lines

documentation, so you don't have to do this "filtered" installation yourself. And worse than that: if you have BR2_HAVE_DEVFILES enabled, your INSTALL_TARGET_CMDS is incorrect.

Gah!... :-(

Thanks for the review!

Regards,
Yann E. MORIN.

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#9 lore raw

PATCH 4/36 package/vde2: new package

In reply to Yann E. MORIN

VDE is an ethernet compliant virtual network that can be spawned over a set of physical computer over the Internet.

---
 package/Config.in      |    1 +
 package/vde2/Config.in |   10 +++++++++
 package/vde2/vde2.mk   |   51 ++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 62 insertions(+), 0 deletions(-)
 create mode 100644 package/vde2/Config.in
 create mode 100644 package/vde2/vde2.mk
package/Config.in +1 -0
index f139e29..3b581a2 100644
@@ -611,6 +611,7 @@ source "package/transmission/Config.in"
 source "package/ttcp/Config.in"
 source "package/udpcast/Config.in"
 source "package/ushare/Config.in"
+source "package/vde2/Config.in"
 source "package/vpnc/Config.in"
 source "package/vsftpd/Config.in"
 source "package/vtun/Config.in"
package/vde2/Config.in new file +10 -0
new file mode 100644
index 0000000..1591bc4
@@ -0,0 +1,10 @@
+config BR2_PACKAGE_VDE2
+	bool "vde2"
+	help
+	  VDE is an ethernet compliant virtual network that can be
+	  spawned over a set of physical computer over the Internet.
+	  VDE is part of virtualsquare project.
+	  
+	  http://vde.sourceforge.net/
+	  
+	  Note: only the libraries are installed.
package/vde2/vde2.mk new file +51 -0

51 lines not on this page · raw message

Signature · 1 line
1.7.2.5
#10 lore raw

PATCH 4/36 package/vde2: new package

Le Mon, 13 Aug 2012 01:53:52 +0200,
"Yann E. MORIN" <[email protected]> a ?crit :

package/vde2/vde2.mk line 49

Quoted 10 lines
package/vde2/vde2.mk new file +10 -0
+# For now, we install only the libraries
+# Installing the complete VDE suite can come in a later patch
+#?In that case, do not forget to update the license!
+define VDE2_INSTALL_TARGET_CMDS
+	$(INSTALL) -D -m 0755 $(STAGING_DIR)/usr/lib/libvde*.so*    \
+	                      $(TARGET_DIR)/usr/lib
+	$(INSTALL) -d -m 0755 $(TARGET_DIR)/usr/lib/vde2/vde_l3
+	$(INSTALL) -D -m 0755 $(STAGING_DIR)/usr/lib/vde2/vde_l3/*.so   \
+	                      $(TARGET_DIR)/usr/lib/vde2/vde_l3
+endef

Again, "make install" ?

Best regards,

Thomas

Signature · 4 lines
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
#11 lore raw

PATCH 4/36 package/vde2: new package

Thomas, All,

Quoted 15 lines · On Tuesday 14 August 2012 15:24:25 Thomas Petazzoni wrote:

Le Mon, 13 Aug 2012 01:53:52 +0200,
"Yann E. MORIN" <[email protected]> a ?crit :

package/vde2/vde2.mk line 49

Quoted 10 lines
package/vde2/vde2.mk new file +10 -0
+# For now, we install only the libraries
+# Installing the complete VDE suite can come in a later patch
+# In that case, do not forget to update the license!
+define VDE2_INSTALL_TARGET_CMDS
+	$(INSTALL) -D -m 0755 $(STAGING_DIR)/usr/lib/libvde*.so*    \
+	                      $(TARGET_DIR)/usr/lib
+	$(INSTALL) -d -m 0755 $(TARGET_DIR)/usr/lib/vde2/vde_l3
+	$(INSTALL) -D -m 0755 $(STAGING_DIR)/usr/lib/vde2/vde_l3/*.so   \
+	                      $(TARGET_DIR)/usr/lib/vde2/vde_l3
+endef

Again, "make install" ?

As I only want to install the libs, I know of no rule to install only libs. But, I can upgrade the package to perform a full install, that would probably be easy.

Regards,
Yann E. MORIN.

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#12 lore raw

PATCH 5/36 package/libiscsi: new package

In reply to Yann E. MORIN
---
 package/Config.in            |    1 +
 package/libiscsi/Config.in   |   12 ++++++++++++
 package/libiscsi/libiscsi.mk |   23 +++++++++++++++++++++++
 3 files changed, 36 insertions(+), 0 deletions(-)
 create mode 100644 package/libiscsi/Config.in
 create mode 100644 package/libiscsi/libiscsi.mk
package/Config.in +1 -0
index 3b581a2..ef411e3 100644
@@ -417,6 +417,7 @@ source "package/libesmtp/Config.in"
 source "package/libeXosip2/Config.in"
 source "package/libfcgi/Config.in"
 source "package/libidn/Config.in"
+source "package/libiscsi/Config.in"
 source "package/liboauth/Config.in"
 source "package/libmicrohttpd/Config.in"
 source "package/neon/Config.in"
package/libiscsi/Config.in new file +12 -0
new file mode 100644
index 0000000..f3fc29e
@@ -0,0 +1,12 @@
+config BR2_PACKAGE_LIBISCSI
+	bool "libiscsi"
+	select BR2_PACKAGE_POPT
+	help
+	  Libiscsi is a client-side library to implement the iSCSI protocol
+	  that can be used to access resource of an iSCSI Target.
+	  
+	  The library is fully async with regards to iscsi commands and scsi
+	  tasks, but a sync layer is also provided for ease of use for simpler
+	  applications.
+	  
+	  https://github.com/sahlberg/libiscsi  (no proper homepage)
package/libiscsi/libiscsi.mk new file +23 -0
new file mode 100644
index 0000000..4e1fe1a
@@ -0,0 +1,23 @@
+#-----------------------------------------------------------------------------
+# Package description
+
+LIBISCSI_VERSION         = 1.5.0
+LIBISCSI_SITE            = git://github.com/sahlberg/libiscsi.git
+LIBISCSI_LICENSE         = LGPLv2.1+
+LIBISCSI_LICENSE_FILES   = COPYING LICENCE-LGPL-2.1.txt
+#?Note: the binaries are GPLv2+, but we do not use them
+LIBISCSI_INSTALL_STAGING = YES
+LIBISCSI_DEPENDENCIES    = popt
+
+#----------------------------------------------------------------------------
+# Package build process
+
+# As we use the git repository, we need to generate the configure script
+# Using the standard autoreconf does not work (missing m4/ dir)
+define LIBISCSI_CREATE_CONFIGURE
+	cd $(@D); ./autogen.sh
+endef
+LIBISCSI_PRE_CONFIGURE_HOOKS += LIBISCSI_CREATE_CONFIGURE
+LIBISCSI_DEPENDENCIES        += host-autoconf
+
+$(eval $(autotools-package))
Signature · 1 line
1.7.2.5
#13 lore raw

PATCH 5/36 package/libiscsi: new package

Le Mon, 13 Aug 2012 01:53:53 +0200,
"Yann E. MORIN" <[email protected]> a ?crit :

package/libiscsi/libiscsi.mk line 5

Quoted 2 lines
package/libiscsi/libiscsi.mk new file +2 -0
+LIBISCSI_VERSION         = 1.5.0
+LIBISCSI_SITE            = git://github.com/sahlberg/libiscsi.git

You can instead use

https://github.com/sahlberg/libiscsi/zipball/$(LIBISCI_VERSION)

which will download a zip file of the project.

Quoted 6 lines
package/libiscsi/libiscsi.mk new file +6 -0
+LIBISCSI_LICENSE         = LGPLv2.1+
+LIBISCSI_LICENSE_FILES   = COPYING LICENCE-LGPL-2.1.txt
+#?Note: the binaries are GPLv2+, but we do not use them
+LIBISCSI_INSTALL_STAGING = YES
+LIBISCSI_DEPENDENCIES    = popt
+

package/libiscsi/libiscsi.mk line 21

Quoted 10 lines
package/libiscsi/libiscsi.mk new file +10 -0
+#----------------------------------------------------------------------------
+# Package build process
+
+# As we use the git repository, we need to generate the configure script
+# Using the standard autoreconf does not work (missing m4/ dir)
+define LIBISCSI_CREATE_CONFIGURE
+	cd $(@D); ./autogen.sh
+endef
+LIBISCSI_PRE_CONFIGURE_HOOKS += LIBISCSI_CREATE_CONFIGURE
+LIBISCSI_DEPENDENCIES        += host-autoconf

host-autoconf will not bring host-automake, so I think you should either depend on host-automake (which itself depends on host-autoconf), or you should do like the autotools package infrastructure does:
FOO_DEPENDENCIES += host-automake host-autoconf host-libtool.

Or, you can do something like:

LIBISCSI_AUTORECONF = YES
# Having a m4/ directory is mandatory for autoreconf to work define LIBISCSI_CREATE_M4_DIR

	mkdir -p $(@D)/m4

endef
LIBISCSI_PRE_CONFIGURE_HOOKS += LIBISCSI_CREATE_M4_DIR

I don't have a strong opinion between those two solutions.

Thomas

Signature · 4 lines
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
#14 lore raw

PATCH 5/36 package/libiscsi: new package

2012/8/17 Thomas Petazzoni <[email protected]>:

Quoted 11 lines

Le Mon, 13 Aug 2012 01:53:53 +0200,
"Yann E. MORIN" <[email protected]> a ?crit :

package/libiscsi/libiscsi.mk line 5

Quoted 2 lines
package/libiscsi/libiscsi.mk new file +2 -0
+LIBISCSI_VERSION         = 1.5.0
+LIBISCSI_SITE            = git://github.com/sahlberg/libiscsi.git

You can instead use

https://github.com/sahlberg/libiscsi/zipball/$(LIBISCI_VERSION)

which will download a zip file of the project.

I think the right url is:
https://github.com/downloads/sahlberg/libiscsi/libiscsi-1.5.0.tar.gz

Though the zipball/tarball url is valid as soon as a tag is pushed in the repository, it will require some more plumbing in the download infrastructure since the downloaded file name is $(FOO_VERSION) with no extension. What a pity!

BTW, to get a source archive available on
https://github.com/downloads/*, the maintainers of the projects have to upload it.

Quoted 14 lines
Quoted 14 lines
package/libiscsi/libiscsi.mk new file +13 -0
+LIBISCSI_LICENSE         = LGPLv2.1+
+LIBISCSI_LICENSE_FILES   = COPYING LICENCE-LGPL-2.1.txt
+# Note: the binaries are GPLv2+, but we do not use them
+LIBISCSI_INSTALL_STAGING = YES
+LIBISCSI_DEPENDENCIES    = popt
+
+#----------------------------------------------------------------------------
+# Package build process
+
+# As we use the git repository, we need to generate the configure script
+# Using the standard autoreconf does not work (missing m4/ dir)
+define LIBISCSI_CREATE_CONFIGURE
+     cd $(@D); ./autogen.sh
Quoted 8 lines

package/libiscsi/libiscsi.mk line 21

Quoted 3 lines
package/libiscsi/libiscsi.mk new file +3 -0
+endef
+LIBISCSI_PRE_CONFIGURE_HOOKS += LIBISCSI_CREATE_CONFIGURE
+LIBISCSI_DEPENDENCIES        += host-autoconf

host-autoconf will not bring host-automake, so I think you should either depend on host-automake (which itself depends on host-autoconf), or you should do like the autotools package infrastructure does:
FOO_DEPENDENCIES += host-automake host-autoconf host-libtool.

I would assume that the autotools-package infrastructure automatically pulled these host dependencies...

Signature · 1 line
Sam
#15 lore raw

PATCH 5/36 package/libiscsi: new package

Le Fri, 17 Aug 2012 14:29:53 +0200,
Samuel Martin <[email protected]> a ?crit :

Quoted 8 lines
Quoted 5 lines

You can instead use

https://github.com/sahlberg/libiscsi/zipball/$(LIBISCI_VERSION)

which will download a zip file of the project.

I think the right url is:
https://github.com/downloads/sahlberg/libiscsi/libiscsi-1.5.0.tar.gz

Well, the above URL worked for me as well :)

Quoted 4 lines

Though the zipball/tarball url is valid as soon as a tag is pushed in the repository, it will require some more plumbing in the download infrastructure since the downloaded file name is $(FOO_VERSION) with no extension. What a pity!

We have done changes to allow that for external toolchains (i.e download a funky Git URL into a reasonably named tarball file), should we do this for packages?

Quoted 7 lines
Quoted 4 lines

host-autoconf will not bring host-automake, so I think you should either depend on host-automake (which itself depends on host-autoconf), or you should do like the autotools package infrastructure does:
FOO_DEPENDENCIES += host-automake host-autoconf host-libtool.

I would assume that the autotools-package infrastructure automatically pulled these host dependencies...

It does if you do FOO_AUTORECONF=YES. But in this case, the FOO_AUTORECONF mechanism doesn't work because the source tree lacks a m4/ directory, needed for autoreconf. Usually, the packages come with some ./autogen or ./autogen.sh or ./bootstrap script doing the necessary preparation + autoreconf call, but there is no really commonly adopted best practice here.

Best regards,

Thomas

Signature · 4 lines
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
#16 lore raw

PATCH 6/36 package/usbredir: new package

In reply to Yann E. MORIN
---
 package/Config.in            |    1 +
 package/usbredir/Config.in   |   15 +++++++++++++++
 package/usbredir/usbredir.mk |   26 ++++++++++++++++++++++++++
 3 files changed, 42 insertions(+), 0 deletions(-)
 create mode 100644 package/usbredir/Config.in
 create mode 100644 package/usbredir/usbredir.mk
package/Config.in +1 -0
index ef411e3..4264d48 100644
@@ -438,6 +438,7 @@ source "package/libupnp/Config.in"
 source "package/libvncserver/Config.in"
 source "package/nss-mdns/Config.in"
 source "package/ortp/Config.in"
+source "package/usbredir/Config.in"
 source "package/zeromq/Config.in"
 endmenu
 
package/usbredir/Config.in new file +15 -0
new file mode 100644
index 0000000..5d9560a
@@ -0,0 +1,15 @@
+config BR2_PACKAGE_USBREDIR
+	bool "usbredir"
+	depends on BR2_PACKAGE_LIBUSB
+	help
+	  usbredir is the name of a network protocol for sending usb device
+	  traffic over a network connection. It is also the name of the
+	  software package offering a parsing library, a usbredirhost library
+	  and several utilities implementing this protocol.
+	  
+	  Note: currently, only the library is installed, not the utilities.
+	  
+	  http://www.spice-space.org/page/UsbRedir
+
+comment "usbredir requires libusb"
+	depends on !BR2_PACKAGE_LIBUSB
package/usbredir/usbredir.mk new file +26 -0
new file mode 100644
index 0000000..a70a60b
@@ -0,0 +1,26 @@
+#-----------------------------------------------------------------------------
+# Package description
+
+USBREDIR_VERSION         = 0.4.3
+USBREDIR_SOURCE          = usbredir-$(USBREDIR_VERSION).tar.bz2
+USBREDIR_SITE            = http://spice-space.org/download/usbredir
+USBREDIR_LICENSE         = LGPLv2.1+
+USBREDIR_LICENSE_FILES   = COPYING.LIB
+# Note: the executables are GPLv2+, but we do not use them
+USBREDIR_INSTALL_STAGING = YES
+USBREDIR_DEPENDENCIES    = libusb
+
+#----------------------------------------------------------------------------
+# Package build process
+
+USBREDIR_DEPENDENCIES += host-pkg-config
+
+# It's much easier to remove unwanted files after-the-fact, rather than trying
+# to install only what we want. Sad-and-dull life, but life nonetheless...
+# Note: do not ofrget to update the license, above, if you keep the server.
+define USBREDIR_POST_INSTALL_TARGET_RM_SERVER
+	rm -f $(TARGET_DIR)/usr/sbin/usbredirserver
+endef
+USBREDIR_POST_INSTALL_TARGET_HOOKS += USBREDIR_POST_INSTALL_TARGET_RM_SERVER
+
+$(eval $(autotools-package))
Signature · 1 line
1.7.2.5
#17 lore raw

PATCH 6/36 package/usbredir: new package

Le Mon, 13 Aug 2012 01:53:54 +0200,
"Yann E. MORIN" <[email protected]> a ?crit :

Quoted 1 line

+# Note: do not ofrget to update the license, above, if you keep the server.

forget

Otherwise, looks good.

Another note: have you looked at the uClibc compatibility of all these new packages, regarding things like wchar, locale, largefile, ipv6 and al. ?

Best regards,

Thomas

Signature · 4 lines
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
#18 lore raw

PATCH 6/36 package/usbredir: new package

Thomas, All,

Quoted 6 lines · On Friday 17 August 2012 13:15:58 Thomas Petazzoni wrote:

Le Mon, 13 Aug 2012 01:53:54 +0200,
"Yann E. MORIN" <[email protected]> a ?crit :

Quoted 1 line

+# Note: do not ofrget to update the license, above, if you keep the server.

forget

Hehe! :-)

Quoted 5 lines

Otherwise, looks good.

Another note: have you looked at the uClibc compatibility of all these new packages, regarding things like wchar, locale, largefile, ipv6 and al. ?

I'm building with uClibc, but granted, that's a full-featured config.

I'll test further with a stripped-down config to see what's missing.

I at least know of one of the packages that requires SSP in the libc, but I think there's no such knob in BR for now.

Regards,
Yann E. MORIN.

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#19 lore raw

PATCH 6/36 package/usbredir: new package

Le Fri, 17 Aug 2012 15:37:53 +0200,
"Yann E. MORIN" <[email protected]> a ?crit :

Quoted 7 lines
Quoted 3 lines

Another note: have you looked at the uClibc compatibility of all these new packages, regarding things like wchar, locale, largefile, ipv6 and al. ?

I'm building with uClibc, but granted, that's a full-featured config.

I'll test further with a stripped-down config to see what's missing.

Ok, thanks!

Quoted 2 lines

I at least know of one of the packages that requires SSP in the libc, but I think there's no such knob in BR for now.

We have BR2_TOOLCHAIN_BUILDROOT_USE_SSP in the internal backend.

If one package requires SSP support, it's going to be a pain with external toolchains that may not have enabled this feature. How is it possible that a package requires such mechanism?

Thomas

Signature · 4 lines
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
#20 lore raw

PATCH 7/36 package/celt051: new package

In reply to Yann E. MORIN
---
 package/multimedia/Config.in         |    1 +
 package/multimedia/celt051/Config.in |   15 +++++++++++++++
 package/multimedia/celt051/celt.mk   |   26 ++++++++++++++++++++++++++
 3 files changed, 42 insertions(+), 0 deletions(-)
 create mode 100644 package/multimedia/celt051/Config.in
 create mode 100644 package/multimedia/celt051/celt.mk
package/multimedia/Config.in +1 -0
index afe4a23..b641b51 100644
@@ -2,6 +2,7 @@ menu "Audio and video applications"
 source "package/multimedia/alsa-utils/Config.in"
 source "package/multimedia/aumix/Config.in"
 source "package/multimedia/bellagio/Config.in"
+source "package/multimedia/celt051/Config.in"
 source "package/multimedia/faad2/Config.in"
 source "package/multimedia/flac/Config.in"
 source "package/multimedia/ffmpeg/Config.in"
package/multimedia/celt051/Config.in new file +15 -0
new file mode 100644
index 0000000..50ed069
@@ -0,0 +1,15 @@
+config BR2_PACKAGE_CELT051
+	bool "celt051"
+	select BR2_PACKAGE_LIBOGG
+	help
+	  The CELT ultra-low delay audio codec
+	  
+	  The CELT codec is a compression algorithm for audio. Like MP3,
+	  Vorbis, and AAC it is suitable for transmitting music with high
+	  quality. Unlike these formats CELT imposes very little delay on
+	  the signal, even less than is typical for speech centric formats
+	  like Speex, GSM, or G.729.
+	  
+	  Note: this is version 0.5.1.3 of celt.
+	  
+	  http://www.celt-codec.org/
package/multimedia/celt051/celt.mk new file +26 -0
new file mode 100644
index 0000000..e5b87c5
@@ -0,0 +1,26 @@
+#-----------------------------------------------------------------------------
+# Package description
+
+# Although version newer than 0.5.1.3 exists, we're
+# stuck with 0.5.1.3 for use by Spice (coming later)
+CELT051_VERSION         = 0.5.1.3
+CELT051_SOURCE          = celt-$(CELT051_VERSION).tar.gz
+CELT051_SITE            = http://downloads.xiph.org/releases/celt
+CELT051_LICENSE         = BSD-2c
+CELT051_LICENSE_FILES   = COPYING
+CELT051_INSTALL_STAGING = YES
+CELT051_DEPENDENCIES    = libogg
+
+#----------------------------------------------------------------------------
+# Package build process
+
+
+CELT051_CONF_OPT =                  \
+  --enable-fixed-point              \
+  --disable-fixed-point-debug       \
+  --disable-experimental-postfilter \
+  --disable-static-modes            \
+  --disable-assertions              \
+  --disable-oggtest                 \
+
+$(eval $(autotools-package))
Signature · 1 line
1.7.2.5
#21 lore raw

PATCH 7/36 package/celt051: new package

Le Mon, 13 Aug 2012 01:53:55 +0200,
"Yann E. MORIN" <[email protected]> a ?crit :

package/multimedia/celt051/Config.in line 5

Quoted 8 lines
package/multimedia/celt051/Config.in new file +5 -0
@@ -0,0 +1,15 @@
+config BR2_PACKAGE_CELT051
+	bool "celt051"
+	select BR2_PACKAGE_LIBOGG
+	help
+	  The CELT ultra-low delay audio codec

Just curious, for what reason an audio codec is needed as a dependency of a virtual machine thing? How does it fit in the stack?

package/multimedia/celt051/Config.in line 7

Quoted 2 lines
package/multimedia/celt051/Config.in new file +2 -0
+# Although version newer than 0.5.1.3 exists, we're
+# stuck with 0.5.1.3 for use by Spice (coming later)

Do you predict this version requirement to be kept for a long period of time?

Signature · 4 lines
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
#22 lore raw

PATCH 7/36 package/celt051: new package

Thomas, All,

Quoted 14 lines · On Friday 17 August 2012 13:18:18 Thomas Petazzoni wrote:

Le Mon, 13 Aug 2012 01:53:55 +0200,
"Yann E. MORIN" <[email protected]> a ?crit :

package/multimedia/celt051/Config.in line 5

Quoted 8 lines
package/multimedia/celt051/Config.in new file +5 -0
@@ -0,0 +1,15 @@
+config BR2_PACKAGE_CELT051
+	bool "celt051"
+	select BR2_PACKAGE_LIBOGG
+	help
+	  The CELT ultra-low delay audio codec

Just curious, for what reason an audio codec is needed as a dependency of a virtual machine thing? How does it fit in the stack?

celt-0.51 is a hard-depdency for Spice to encode the audio. It's select-ed by BR2_PACKAGE_SPICE in a later patch.

Note that I added all new packages in a row, rather than add them just prior to the requiring qemu feature. Should I re-order the series to make the depedencies clearer?

Quoted 5 lines

package/multimedia/celt051/Config.in line 7

Quoted 2 lines
package/multimedia/celt051/Config.in new file +2 -0
+# Although version newer than 0.5.1.3 exists, we're
+# stuck with 0.5.1.3 for use by Spice (coming later)

Do you predict this version requirement to be kept for a long period of time?

Spice advertises that celt-051 is the only supported version because later versions have changed too much and are thus not compatible.

I have absolutely no idea whther Spice will upgrade one day... :-/

Quoted 1 line

Thanks!

Regards,
Yann E. MORIN.

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#23 lore raw

PATCH 7/36 package/celt051: new package

Le Fri, 17 Aug 2012 15:27:29 +0200,
"Yann E. MORIN" <[email protected]> a ?crit :

Quoted 9 lines
Quoted 2 lines

Just curious, for what reason an audio codec is needed as a dependency of a virtual machine thing? How does it fit in the stack?

celt-0.51 is a hard-depdency for Spice to encode the audio. It's select-ed by BR2_PACKAGE_SPICE in a later patch.

Note that I added all new packages in a row, rather than add them just prior to the requiring qemu feature. Should I re-order the series to make the depedencies clearer?

No, I understood perfectly that celt was a dependency of spice. My question was not Buildroot-specific: I was trying to understand what Qemu/Spice had to do with an audio encoder.

Quoted 7 lines
Quoted 2 lines

Do you predict this version requirement to be kept for a long period of time?

Spice advertises that celt-051 is the only supported version because later versions have changed too much and are thus not compatible.

I have absolutely no idea whther Spice will upgrade one day... :-/

Ah, ok, I just realized you named the package celt051 and not celt just because of that. Ok, good.

Thomas

Signature · 4 lines
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
#24 lore raw

PATCH 7/36 package/celt051: new package

Thomas, All,

Quoted 9 lines · On Friday 17 August 2012 15:50:47 Thomas Petazzoni wrote:

Le Fri, 17 Aug 2012 15:27:29 +0200,
"Yann E. MORIN" <[email protected]> a ?crit :

Quoted 6 lines
Quoted 2 lines

Just curious, for what reason an audio codec is needed as a dependency of a virtual machine thing? How does it fit in the stack?

celt-0.51 is a hard-depdency for Spice to encode the audio. It's select-ed by BR2_PACKAGE_SPICE in a later patch.

Quoted 7 lines
Quoted 3 lines

Note that I added all new packages in a row, rather than add them just prior to the requiring qemu feature. Should I re-order the series to make the depedencies clearer?

No, I understood perfectly that celt was a dependency of spice. My question was not Buildroot-specific: I was trying to understand what Qemu/Spice had to do with an audio encoder.

Spice is a VNC-like solution, but specificaly designed for use by virtual machine hypervisors. It can transport video and audio alike, and uses celt to encode/decode the audio for sending over-the-wire.

I don't know why they choose celt instead of ogg or anything else, except maybe that celt is developped to be really patent-unencumbered.

Regards,
Yann E. MORIN.

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#25 lore raw

PATCH 8/36 package/python-pyparsing: new package

In reply to Yann E. MORIN
---
 package/Config.in                            |    1 +
 package/python-pyparsing/Config.in           |   11 +++++++
 package/python-pyparsing/python-pyparsing.mk |   38 ++++++++++++++++++++++++++
 3 files changed, 50 insertions(+), 0 deletions(-)
 create mode 100644 package/python-pyparsing/Config.in
 create mode 100644 package/python-pyparsing/python-pyparsing.mk
package/Config.in +1 -0
index 4264d48..ae22203 100644
@@ -273,6 +273,7 @@ source "package/python-mad/Config.in"
 source "package/python-netifaces/Config.in"
 source "package/python-nfc/Config.in"
 source "package/python-pygame/Config.in"
+source "package/python-pyparsing/Config.in"
 source "package/python-serial/Config.in"
 source "package/python-setuptools/Config.in"
 endmenu
package/python-pyparsing/Config.in new file +11 -0
new file mode 100644
index 0000000..126dd0e
@@ -0,0 +1,11 @@
+config BR2_PACKAGE_PYTHON_PYPARSING
+	bool "pyparsing"
+	depends on BR2_PACKAGE_PYTHON
+	help
+	  The pyparsing module is an alternative approach to creating and
+	  executing simple grammars, vs. the traditional lex/yacc approach,
+	  or the use of regular expressions. The pyparsing module provides
+	  a library of classes that client code uses to construct the grammar
+	  directly in Python code.
+	  
+	  http://pyparsing.wikispaces.com/
package/python-pyparsing/python-pyparsing.mk new file +38 -0
new file mode 100644
index 0000000..57d7b33
@@ -0,0 +1,38 @@
+#-----------------------------------------------------------------------------
+# Package description
+
+PYTHON_PYPARSING_VERSION         = 1.5.6
+PYTHON_PYPARSING_SOURCE          = pyparsing-$(PYTHON_PYPARSING_VERSION).tar.gz
+PYTHON_PYPARSING_SITE            = http://$(BR2_SOURCEFORGE_MIRROR).dl.sourceforge.net/project/pyparsing/pyparsing/pyparsing-$(PYTHON_PYPARSING_VERSION)
+PYTHON_PYPARSING_LICENSE         = MIT
+PYTHON_PYPARSING_LICENSE_FILES   = LICENSE
+PYTHON_PYPARSING_INSTALL_STAGING = YES
+PYTHON_PYPARSING_DEPENDENCIES    = python
+
+#----------------------------------------------------------------------------
+# Package build process
+
+# Shamelessly vampirised from python-pygame ;-)
+define PYTHON_PYPARSING_BUILD_CMDS
+	(cd $(@D);                                              \
+	 CC="$(TARGET_CC)"                                      \
+	 CFLAGS="$(TARGET_CFLAGS)"                              \
+	 LDSHARED="$(TARGET_CROSS)gcc -shared"                  \
+	 CROSS_COMPILING=yes                                    \
+	 _python_sysroot=$(STAGING_DIR)                         \
+	 _python_srcdir=$(BUILD_DIR)/python$(PYTHON_VERSION)    \
+	 _python_prefix=/usr                                    \
+	 _python_exec_prefix=/usr                               \
+	 $(HOST_DIR)/usr/bin/python setup.py build              \
+	)
+endef
+
+# Shamelessly vampirised from python-pygame ;-)
+define PYTHON_PYPARSING_INSTALL_TARGET_CMDS
+	(cd $(@D);                                              \
+	 $(HOST_DIR)/usr/bin/python setup.py install            \
+	                            --prefix=$(TARGET_DIR)/usr  \
+	)
+endef
+
+$(eval $(generic-package))
Signature · 1 line
1.7.2.5
#26 lore raw

PATCH 8/36 package/python-pyparsing: new package

Le Mon, 13 Aug 2012 01:53:56 +0200,
"Yann E. MORIN" <[email protected]> a ?crit :

Quoted 8 lines
---
 package/Config.in                            |    1 +
 package/python-pyparsing/Config.in           |   11 +++++++
 package/python-pyparsing/python-pyparsing.mk |   38 ++++++++++++++++++++++++++
 3 files changed, 50 insertions(+), 0 deletions(-)
 create mode 100644 package/python-pyparsing/Config.in
 create mode 100644 package/python-pyparsing/python-pyparsing.mk
Signature · 4 lines
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
#27 lore raw

PATCH 9/36 package/spice-protocol: new package

In reply to Yann E. MORIN
---
 package/Config.in                        |    1 +
 package/spice-protocol/Config.in         |   12 ++++++++++++
 package/spice-protocol/spice-protocol.mk |   14 ++++++++++++++
 3 files changed, 27 insertions(+), 0 deletions(-)
 create mode 100644 package/spice-protocol/Config.in
 create mode 100644 package/spice-protocol/spice-protocol.mk
package/Config.in +1 -0
index ae22203..d916128 100644
@@ -600,6 +600,7 @@ source "package/ser2net/Config.in"
 source "package/socat/Config.in"
 source "package/socketcand/Config.in"
 source "package/spawn-fcgi/Config.in"
+source "package/spice-protocol/Config.in"
 source "package/squid/Config.in"
 source "package/stunnel/Config.in"
 source "package/tcpdump/Config.in"
package/spice-protocol/Config.in new file +12 -0
new file mode 100644
index 0000000..3be82a8
@@ -0,0 +1,12 @@
+config BR2_PACKAGE_SPICE_PROTOCOL
+	bool "spice protocol"
+	help
+	  The Spice project aims to provide a complete open source
+	  solution for interaction with virtualized desktop devices.
+	  The Spice project deals with both the virtualized devices
+	  and the front-end. Interaction between front-end and
+	  back-end is done using VD-Interfaces.
+	  
+	  This package implements the ptotocol-part of Spice.
+	  
+	  http://www.spice-space.org/
package/spice-protocol/spice-protocol.mk new file +14 -0
new file mode 100644
index 0000000..0197c6c
@@ -0,0 +1,14 @@
+#-----------------------------------------------------------------------------
+# Package description
+
+SPICE_PROTOCOL_VERSION         = 0.12.0
+SPICE_PROTOCOL_SOURCE          = spice-protocol-$(SPICE_PROTOCOL_VERSION).tar.bz2
+SPICE_PROTOCOL_SITE            = http://www.spice-space.org/download/releases/
+SPICE_PROTOCOL_LICENSE         = BSD-3c
+SPICE_PROTOCOL_LICENSE_FILES   = COPYING
+SPICE_PROTOCOL_INSTALL_STAGING = YES
+
+#----------------------------------------------------------------------------
+# Package build process
+
+$(eval $(autotools-package))
Signature · 1 line
1.7.2.5
#28 lore raw

PATCH 9/36 package/spice-protocol: new package

Le Mon, 13 Aug 2012 01:53:57 +0200,
"Yann E. MORIN" <[email protected]> a ?crit :

package/spice-protocol/Config.in line 10

Quoted 1 line
package/spice-protocol/Config.in new file +1 -0
+	  This package implements the ptotocol-part of Spice.

protocol

Once fixed:

Signature · 4 lines
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
#29 lore raw

PATCH 10/36 package/spice-server: new package

In reply to Yann E. MORIN
---
 package/Config.in       |    1 +
 package/spice/Config.in |   22 ++++++++++++++++++++++
 package/spice/spice.mk  |   39 +++++++++++++++++++++++++++++++++++++++
 3 files changed, 62 insertions(+), 0 deletions(-)
 create mode 100644 package/spice/Config.in
 create mode 100644 package/spice/spice.mk
package/Config.in +1 -0
index d916128..3109591 100644
@@ -601,6 +601,7 @@ source "package/socat/Config.in"
 source "package/socketcand/Config.in"
 source "package/spawn-fcgi/Config.in"
 source "package/spice-protocol/Config.in"
+source "package/spice/Config.in"
 source "package/squid/Config.in"
 source "package/stunnel/Config.in"
 source "package/tcpdump/Config.in"
package/spice/Config.in new file +22 -0
new file mode 100644
index 0000000..5a42730
@@ -0,0 +1,22 @@
+config BR2_PACKAGE_SPICE
+	bool "spice server"
+	depends on BR2_PACKAGE_PYTHON_PYPARSING
+	select BR2_PACKAGE_SPICE_PROTOCOL
+	select BR2_PACKAGE_PIXMAN
+	select BR2_PACKAGE_CELT051
+	select BR2_PACKAGE_ALSA_LIB
+	select BR2_PACKAGE_OPENSSL
+	select BR2_PACKAGE_JPEG
+	help
+	  The Spice project aims to provide a complete open source
+	  solution for interaction with virtualized desktop devices.
+	  The Spice project deals with both the virtualized devices
+	  and the front-end. Interaction between front-end and
+	  back-end is done using VD-Interfaces.
+	  
+	  This package implements the server-part of Spice.
+	  
+	  http://www.spice-space.org/
+
+comment "spice server depends on python-pyparsing"
+	depends on !BR2_PACKAGE_PYTHON_PYPARSING
package/spice/spice.mk new file +39 -0
new file mode 100644
index 0000000..7e3fe5c
@@ -0,0 +1,39 @@
+#-----------------------------------------------------------------------------
+# Package description
+
+SPICE_VERSION         = 0.11.0
+SPICE_SOURCE          = spice-$(SPICE_VERSION).tar.bz2
+SPICE_SITE            = http://www.spice-space.org/download/releases/
+SPICE_LICENSE         = LGPLv2.1+
+SPICE_LICENSE_FILES   = COPYING
+SPICE_INSTALL_STAGING = YES
+SPICE_DEPENDENCIES    = \
+    spice-protocol      \
+    pixman              \
+    celt051             \
+    python-pyparsing    \
+    alsa-lib            \
+    openssl             \
+    jpeg                \
+
+#----------------------------------------------------------------------------
+# Package build process
+
+# We disable everything for now, because the dependency tree can become
+# quite deep if we try to enable some features, and I have not tested that.
+SPICE_CONF_OPT =            \
+  --disable-tunnel          \
+  --disable-gui             \
+  --disable-opengl          \
+  --disable-smartcard       \
+  --disable-client          \
+  --disable-automated-tests \
+  --without-sasl            \
+  --without-x               \
+
+SPICE_DEPENDENCIES += host-pkg-config
+
+SPICE_CONF_ENV = PYTHONPATH=$(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages
+SPICE_MAKE_ENV = PYTHONPATH=$(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages
+
+$(eval $(autotools-package))
Signature · 1 line
1.7.2.5
#30 lore raw

PATCH 10/36 package/spice-server: new package

Le Mon, 13 Aug 2012 01:53:58 +0200,
"Yann E. MORIN" <[email protected]> a ?crit :

package/spice/Config.in line 3

Quoted 6 lines
package/spice/Config.in new file +3 -0
@@ -0,0 +1,22 @@
+config BR2_PACKAGE_SPICE
+	bool "spice server"
+	depends on BR2_PACKAGE_PYTHON_PYPARSING

This should probably be:

depends on BR2_PACKAGE_PYTHON
select BR2_PACKAGE_PYTHON_PYPARSING

Thomas

Signature · 4 lines
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
#31 lore raw

PATCH 10/36 package/spice-server: new package

Thomas, All,

Quoted 12 lines · On Friday 17 August 2012 13:22:18 Thomas Petazzoni wrote:

Le Mon, 13 Aug 2012 01:53:58 +0200,
"Yann E. MORIN" <[email protected]> a ?crit :

package/spice/Config.in line 3

Quoted 6 lines
package/spice/Config.in new file +3 -0
@@ -0,0 +1,22 @@
+config BR2_PACKAGE_SPICE
+	bool "spice server"
+	depends on BR2_PACKAGE_PYTHON_PYPARSING

This should probably be:

Quoted 2 lines

depends on BR2_PACKAGE_PYTHON
select BR2_PACKAGE_PYTHON_PYPARSING

Ok, will do.

Regards,
Yann E. MORIN.

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#32 lore raw

PATCH 11/36 package/qemu: new package

In reply to Yann E. MORIN
---
 package/Config.in      |    1 +
 package/qemu/Config.in |   24 ++++++++++++
 package/qemu/qemu.mk   |   98 ++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 123 insertions(+), 0 deletions(-)
 create mode 100644 package/qemu/Config.in
 create mode 100644 package/qemu/qemu.mk
package/Config.in +1 -0
index 3109591..eb02983 100644
@@ -504,6 +504,7 @@ menu "Miscellaneous"
 source "package/collectd/Config.in"
 source "package/empty/Config.in"
 source "package/mobile-broadband-provider-info/Config.in"
+source "package/qemu/Config.in"
 source "package/shared-mime-info/Config.in"
 source "package/sound-theme-borealis/Config.in"
 source "package/sound-theme-freedesktop/Config.in"
package/qemu/Config.in new file +24 -0
new file mode 100644
index 0000000..a77d863
@@ -0,0 +1,24 @@
+config BR2_PACKAGE_QEMU
+	bool "QEMU"
+	depends on BR2_PACKAGE_PYTHON       # We only need host-python,
+	                                    # but there's no way to say so.
+	select BR2_PACKAGE_ZLIB
+	select BR2_PACKAGE_LIBGLIB2
+	help
+	  QEMU is a generic and open source machine emulator and virtualizer.
+	  
+	  When used as a machine emulator, QEMU can run OSes and programs made
+	  for one machine (e.g. an ARM board) on a different machine (e.g.
+	  your own PC). By using dynamic translation, it achieves very good
+	  performance.
+	  
+	  When used as a virtualizer, QEMU achieves near native performances
+	  by executing the guest code directly on the host CPU. QEMU supports
+	  virtualization when executing under the Xen hypervisor or using the
+	  KVM kernel module in Linux. When using KVM, QEMU can virtualize x86,
+	  server and embedded PowerPC, and S390 guests. 
+	  
+	  http://qemu.org/
+
+comment "QEMU requires python"
+	depends on !BR2_PACKAGE_PYTHON
package/qemu/qemu.mk new file +98 -0

98 lines not on this page · raw message

Signature · 1 line
1.7.2.5
#33 lore raw

PATCH 11/36 package/qemu: new package

Thomas, All,

Quoted 27 lines · On Monday 13 August 2012 01:53:59 Yann E. MORIN wrote:
---
 package/Config.in      |    1 +
 package/qemu/Config.in |   24 ++++++++++++
 package/qemu/qemu.mk   |   98 ++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 123 insertions(+), 0 deletions(-)
 create mode 100644 package/qemu/Config.in
 create mode 100644 package/qemu/qemu.mk
package/Config.in +1 -0
index 3109591..eb02983 100644
@@ -504,6 +504,7 @@ menu "Miscellaneous"
 source "package/collectd/Config.in"
 source "package/empty/Config.in"
 source "package/mobile-broadband-provider-info/Config.in"
+source "package/qemu/Config.in"
 source "package/shared-mime-info/Config.in"
 source "package/sound-theme-borealis/Config.in"
 source "package/sound-theme-freedesktop/Config.in"
package/qemu/Config.in new file +0 -0
new file mode 100644
index 0000000..a77d863

package/qemu/Config.in line 4

Quoted 4 lines
package/qemu/Config.in new file +4 -0
@@ -0,0 +1,24 @@
+config BR2_PACKAGE_QEMU
+	bool "QEMU"
+	depends on BR2_PACKAGE_PYTHON       # We only need host-python,
+	                                    # but there's no way to say so.

And I forgot to add this dependency in the .mk. I'll repush this series later with this change.

Regards,
Yann E. MORIN.

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +0/33 662376056 | Software  Designer | \ / CAMPAIGN     |   ^                |
| --==< O_o >==-- '------------.-------:  X  AGAINST      |  /e\  There is no  |
| http://ymorin.is-a-geek.org/ | (*_*) | / \ HTML MAIL    |  """  conspiracy.  |
'------------------------------'-------'------------------'--------------------'
#34 lore raw

PATCH 11/36 package/qemu: new package

In reply to Yann E. MORIN

Let me understand this: you are trying to build QEMU for the host ?

If you can also hook up some magic woodo to execute the image as well ("make qemu-run" for example) that would really be great.

I was thinking of adding this my self, by setting some new vars depending on the CPU arch chosen, and other tricks. I am still unsure about the details, as this is an idea I toyed with late night.

Quoted 170 lines · Yann E. MORIN
---
 package/Config.in      |    1 +
 package/qemu/Config.in |   24 ++++++++++++
 package/qemu/qemu.mk   |   98
++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 123 insertions(+), 0 deletions(-)
 create mode 100644 package/qemu/Config.in
 create mode 100644 package/qemu/qemu.mk
package/Config.in +1 -0
index 3109591..eb02983 100644
@@ -504,6 +504,7 @@ menu "Miscellaneous"
 source "package/collectd/Config.in"
 source "package/empty/Config.in"
 source "package/mobile-broadband-provider-info/Config.in"
+source "package/qemu/Config.in"
 source "package/shared-mime-info/Config.in"
 source "package/sound-theme-borealis/Config.in"
 source "package/sound-theme-freedesktop/Config.in"
package/qemu/Config.in new file +8 -0
new file mode 100644
index 0000000..a77d863
@@ -0,0 +1,24 @@
+config BR2_PACKAGE_QEMU
+       bool "QEMU"
+       depends on BR2_PACKAGE_PYTHON       # We only need host-python,
+                                           # but there's no way to say so.
+       select BR2_PACKAGE_ZLIB
+       select BR2_PACKAGE_LIBGLIB2
+       help
+         QEMU is a generic and open source machine emulator and

virtualizer.

package/qemu/Config.in new file +2 -0
+
+         When used as a machine emulator, QEMU can run OSes and programs

made

package/qemu/Config.in new file +5 -0
+         for one machine (e.g. an ARM board) on a different machine (e.g.
+         your own PC). By using dynamic translation, it achieves very good
+         performance.
+
+         When used as a virtualizer, QEMU achieves near native

performances
+ by executing the guest code directly on the host CPU. QEMU
supports
+ virtualization when executing under the Xen hypervisor or using
the
+ KVM kernel module in Linux. When using KVM, QEMU can virtualize
x86,

package/qemu/Config.in new file +6 -0
+         server and embedded PowerPC, and S390 guests.
+
+         http://qemu.org/
+
+comment "QEMU requires python"
+       depends on !BR2_PACKAGE_PYTHON
package/qemu/qemu.mk new file +33 -0
new file mode 100644
index 0000000..3825731
@@ -0,0 +1,98 @@
 
+#-----------------------------------------------------------------------------
+# Package description
+
+QEMU_VERSION = 1.1.1-1
+QEMU_SOURCE = qemu-$(QEMU_VERSION).tar.bz2
+QEMU_SITE = http://wiki.qemu.org/download
+QEMU_LICENSE = GPLv2 LGPLv2.1 MIT BSD-3c BSD-2c Others/BSD-1c
+QEMU_LICENSE_FILES = COPYING COPYING.LIB
+# NOTE: there is no top-level license file for non-(L)GPL licenses;
+#       the non-(L)GPL license texts are specified in the affected
+#       individual source files.
+
 
+#-----------------------------------------------------------------------------
+# Package unconditional configuration
+
+QEMU_DEPENDENCIES = zlib libglib2
+
 
+#-----------------------------------------------------------------------------
+# Package conditional configuration
+
+# Need the LIBS variable because librt and libm are
+# not automatically pulled. :-(
+QEMU_LIBS = -lrt -lm
+
+QEMU_OPTS =
+QEMU_VARS =
+
 
+#----------------------------------------------------------------------------
+# Package build process
+
+# Note: although QEMU uses a ./configure script, it is not compatible with
+#       the traditional autotools options (eg. --target et al.), so we can
+#       not use the autotools-package infrastructure. So we have to use

the

package/qemu/qemu.mk new file +65 -1
+#       generic-package infra instead. Sigh... :-(
+
+define QEMU_CONFIGURE_CMDS
+       ( cd $(@D);                                 \
+           LIBS='$(QEMU_LIBS)'                     \
+           $(TARGET_CONFIGURE_OPTS)                \
+           $(TARGET_CONFIGURE_ARGS)                \
+           $(QEMU_VARS)                            \
+           ./configure                             \
+               --prefix=/usr                       \
+               --cross-prefix=$(TARGET_CROSS)      \
+               --audio-drv-list=                   \
+               --audio-card-list=                  \
+               --enable-kvm                        \
+               --enable-nptl                       \
+               --enable-attr                       \
+               --enable-vhost-net                  \
+               --enable-system                     \
+               --enable-linux-user                 \
+               --disable-bsd-user                  \
+               --disable-xen                       \
+               --disable-slirp                     \
+               --disable-sdl                       \
+               --disable-vnc                       \
+               --disable-virtfs                    \
+               --disable-brlapi                    \
+               --disable-curses                    \
+               --disable-curl                      \
+               --disable-fdt                       \
+               --disable-bluez                     \
+               --disable-guest-base                \
+               --disable-uuid                      \
+               --disable-vde                       \
+               --disable-linux-aio                 \
+               --disable-cap-ng                    \
+               --disable-docs                      \
+               --disable-spice                     \
+               --disable-rbd                       \
+               --disable-libiscsi                  \
+               --disable-usb-redir                 \
+               --disable-guest-agent               \
+               --disable-smartcard                 \
+               --disable-strip                     \
+               $(QEMU_OPTS)                        \
+       )
+endef
+
+define QEMU_BUILD_CMDS
+       $(MAKE) -C $(@D)
+endef
+
+define QEMU_INSTALL_TARGET_CMDS
+       $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install
+endef
+
+define QEMU_UNINSTALL_TARGET_CMDS
+       @echo 'QEMU has no uninstall rule.'
+       @false
+endef
+
+define QEMU_CLEAN_CMDS
+       $(MAKE) -C $(@D) clean
+endef
+
+$(eval $(generic-package))
--

1.7.2.5

Quoted 4 lines

_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20120813/e3e63448/attachment-0001.html>

#35 lore raw

PATCH 11/36 package/qemu: new package

Diego, All,

Quoted 1 line · On Monday 13 August 2012 09:22:32 Diego Iastrubni wrote:

Let me understand this: you are trying to build QEMU for the host ?

Nope, it's meant to run on the target.

A long-term goal of this is to try to build a libvirt-based system to run a "VM-farm" rather than use a complete distro. Most probably, it will be a proof-of-concept rather than a real solution, but hey, one never knows before trying.

Of course, the QEMu package could be extended to run on host, so you can run your images, but that would mean that a lot of packages would need their host- counterparts, which is currently not the case.

Besides, it does not really make sense. Just create a new BR config which targets your host, chroot into that (or build static). That's actually what I'm doing, in fact! ;-)

Regards,
Yann E. MORIN.

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +0/33 662376056 | Software  Designer | \ / CAMPAIGN     |   ^                |
| --==< O_o >==-- '------------.-------:  X  AGAINST      |  /e\  There is no  |
| http://ymorin.is-a-geek.org/ | (*_*) | / \ HTML MAIL    |  """  conspiracy.  |
'------------------------------'-------'------------------'--------------------'
#36 lore raw

PATCH 11/36 package/qemu: new package

In reply to Yann E. MORIN

Le Mon, 13 Aug 2012 01:53:59 +0200,
"Yann E. MORIN" <[email protected]> a ?crit :

package/qemu/Config.in line 2

Quoted 7 lines

new file mode 100644
index 0000000..a77d863

package/qemu/Config.in new file +2 -0
@@ -0,0 +1,24 @@
+config BR2_PACKAGE_QEMU
+	bool "QEMU"

Just curious, what's the use case for Qemu on the target? I would have seen Qemu as something useful on the host, but on the target?

package/qemu/Config.in line 4

Quoted 2 lines
package/qemu/Config.in new file +2 -0
+	depends on BR2_PACKAGE_PYTHON       # We only need host-python,
+	                                    # but there's no way to say so.

Doh? You just need to do:

QEMU_DEPENDENCIES += host-python

and that's it.

Quoted 10 lines
package/qemu/Config.in new file +10 -0
+	select BR2_PACKAGE_ZLIB
+	select BR2_PACKAGE_LIBGLIB2
+	help
+	  QEMU is a generic and open source machine emulator and virtualizer.
+	  
+	  When used as a machine emulator, QEMU can run OSes and programs made
+	  for one machine (e.g. an ARM board) on a different machine (e.g.
+	  your own PC). By using dynamic translation, it achieves very good
+	  performance.
+	  

package/qemu/Config.in line 24

Quoted 10 lines
package/qemu/Config.in new file +10 -0
+	  When used as a virtualizer, QEMU achieves near native performances
+	  by executing the guest code directly on the host CPU. QEMU supports
+	  virtualization when executing under the Xen hypervisor or using the
+	  KVM kernel module in Linux. When using KVM, QEMU can virtualize x86,
+	  server and embedded PowerPC, and S390 guests. 
+	  
+	  http://qemu.org/
+
+comment "QEMU requires python"
+	depends on !BR2_PACKAGE_PYTHON

You can drop this.

Quoted 88 lines
package/qemu/qemu.mk new file +82 -0
new file mode 100644
index 0000000..3825731
@@ -0,0 +1,98 @@
+#-----------------------------------------------------------------------------
+# Package description
+
+QEMU_VERSION = 1.1.1-1
+QEMU_SOURCE = qemu-$(QEMU_VERSION).tar.bz2
+QEMU_SITE = http://wiki.qemu.org/download
+QEMU_LICENSE = GPLv2 LGPLv2.1 MIT BSD-3c BSD-2c Others/BSD-1c
+QEMU_LICENSE_FILES = COPYING COPYING.LIB
+#?NOTE: there is no top-level license file for non-(L)GPL licenses;
+#       the non-(L)GPL license texts are specified in the affected
+#       individual source files.
+
+#-----------------------------------------------------------------------------
+# Package unconditional configuration
+
+QEMU_DEPENDENCIES = zlib libglib2
+
+#-----------------------------------------------------------------------------
+# Package conditional configuration
+
+# Need the LIBS variable because librt and libm are
+# not automatically pulled. :-(
+QEMU_LIBS = -lrt -lm
+
+QEMU_OPTS =
+QEMU_VARS =
+
+#----------------------------------------------------------------------------
+# Package build process
+
+# Note: although QEMU uses a ./configure script, it is not compatible with
+#       the traditional autotools options (eg. --target et al.), so we can
+#       not use the autotools-package infrastructure. So we have to use the
+#       generic-package infra instead. Sigh... :-(
+
+define QEMU_CONFIGURE_CMDS
+	( cd $(@D);                                 \
+	    LIBS='$(QEMU_LIBS)'                     \
+	    $(TARGET_CONFIGURE_OPTS)                \
+	    $(TARGET_CONFIGURE_ARGS)                \
+	    $(QEMU_VARS)                            \
+	    ./configure                             \
+	        --prefix=/usr                       \
+	        --cross-prefix=$(TARGET_CROSS)      \
+	        --audio-drv-list=                   \
+	        --audio-card-list=                  \
+	        --enable-kvm                        \
+	        --enable-nptl                       \
+	        --enable-attr                       \
+	        --enable-vhost-net                  \
+	        --enable-system                     \
+	        --enable-linux-user                 \
+	        --disable-bsd-user                  \
+	        --disable-xen                       \
+	        --disable-slirp                     \
+	        --disable-sdl                       \
+	        --disable-vnc                       \
+	        --disable-virtfs                    \
+	        --disable-brlapi                    \
+	        --disable-curses                    \
+	        --disable-curl                      \
+	        --disable-fdt                       \
+	        --disable-bluez                     \
+	        --disable-guest-base                \
+	        --disable-uuid                      \
+	        --disable-vde                       \
+	        --disable-linux-aio                 \
+	        --disable-cap-ng                    \
+	        --disable-docs                      \
+	        --disable-spice                     \
+	        --disable-rbd                       \
+	        --disable-libiscsi                  \
+	        --disable-usb-redir                 \
+	        --disable-guest-agent               \
+	        --disable-smartcard                 \
+	        --disable-strip                     \
+	        $(QEMU_OPTS)                        \
+	)
+endef
+
+define QEMU_BUILD_CMDS
+	$(MAKE) -C $(@D)

package/qemu/qemu.mk line 92

Quoted 10 lines
package/qemu/qemu.mk new file +10 -0
+endef
+
+define QEMU_INSTALL_TARGET_CMDS
+	$(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install
+endef
+
+define QEMU_UNINSTALL_TARGET_CMDS
+	@echo 'QEMU has no uninstall rule.'
+	@false
+endef

Just don't implement the UNINSTALL_TARGET_CMDS in this case.

Since quite some time, we're considering dropping the UNINSTALL_TARGET_CMDS and CLEAN_CMDS altogether.

Best regards,

Thomas

Signature · 4 lines
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
#37 lore raw

PATCH 11/36 package/qemu: new package

Thomas, All,

Quoted 13 lines · On Tuesday 14 August 2012 15:34:03 Thomas Petazzoni wrote:

Le Mon, 13 Aug 2012 01:53:59 +0200,
"Yann E. MORIN" <[email protected]> a ?crit :

package/qemu/Config.in line 2

Quoted 7 lines

new file mode 100644
index 0000000..a77d863

package/qemu/Config.in new file +2 -0
@@ -0,0 +1,24 @@
+config BR2_PACKAGE_QEMU
+	bool "QEMU"

Just curious, what's the use case for Qemu on the target? I would have seen Qemu as something useful on the host, but on the target?

I want to build a libvirt-based system to host VMs, and I do not want to use a complete distro for that : I do not care about the handy-dandy init stuff, I don't care about networking auto-managing stuff, no fscking desktop stuff... I just want a basic system that just runs a libvirt daemon, and manages the VMs.

I want to build a completly-static QEMU, and that's not possible on a desktop/server distro that uses glibc, because static linking still pulls the NSS libs. So, rather than creating a new 'framework', I just decided to reuse something. ;-)

I want to play! ;-)

Quoted 6 lines

package/qemu/Config.in line 4

Quoted 2 lines
package/qemu/Config.in new file +2 -0
+	depends on BR2_PACKAGE_PYTHON       # We only need host-python,
+	                                    # but there's no way to say so.

Doh? You just need to do:
QEMU_DEPENDENCIES += host-python
and that's it.

Doh... :/
/me hides...

Quoted 14 lines
Quoted 14 lines
package/qemu/Config.in new file +14 -0
+	select BR2_PACKAGE_ZLIB
+	select BR2_PACKAGE_LIBGLIB2
+	help
+	  QEMU is a generic and open source machine emulator and virtualizer.
+	  
+	  When used as a machine emulator, QEMU can run OSes and programs made
+	  for one machine (e.g. an ARM board) on a different machine (e.g.
+	  your own PC). By using dynamic translation, it achieves very good
+	  performance.
+	  
+	  When used as a virtualizer, QEMU achieves near native performances
+	  by executing the guest code directly on the host CPU. QEMU supports
+	  virtualization when executing under the Xen hypervisor or using the
+	  KVM kernel module in Linux. When using KVM, QEMU can virtualize x86,
Quoted 8 lines

package/qemu/Config.in line 24

Quoted 6 lines
package/qemu/Config.in new file +6 -0
+	  server and embedded PowerPC, and S390 guests. 
+	  
+	  http://qemu.org/
+
+comment "QEMU requires python"
+	depends on !BR2_PACKAGE_PYTHON

You can drop this.

Of course! :-)

Quoted 92 lines
Quoted 92 lines
package/qemu/qemu.mk new file +86 -0
new file mode 100644
index 0000000..3825731
@@ -0,0 +1,98 @@
+#-----------------------------------------------------------------------------
+# Package description
+
+QEMU_VERSION = 1.1.1-1
+QEMU_SOURCE = qemu-$(QEMU_VERSION).tar.bz2
+QEMU_SITE = http://wiki.qemu.org/download
+QEMU_LICENSE = GPLv2 LGPLv2.1 MIT BSD-3c BSD-2c Others/BSD-1c
+QEMU_LICENSE_FILES = COPYING COPYING.LIB
+# NOTE: there is no top-level license file for non-(L)GPL licenses;
+#       the non-(L)GPL license texts are specified in the affected
+#       individual source files.
+
+#-----------------------------------------------------------------------------
+# Package unconditional configuration
+
+QEMU_DEPENDENCIES = zlib libglib2
+
+#-----------------------------------------------------------------------------
+# Package conditional configuration
+
+# Need the LIBS variable because librt and libm are
+# not automatically pulled. :-(
+QEMU_LIBS = -lrt -lm
+
+QEMU_OPTS =
+QEMU_VARS =
+
+#----------------------------------------------------------------------------
+# Package build process
+
+# Note: although QEMU uses a ./configure script, it is not compatible with
+#       the traditional autotools options (eg. --target et al.), so we can
+#       not use the autotools-package infrastructure. So we have to use the
+#       generic-package infra instead. Sigh... :-(
+
+define QEMU_CONFIGURE_CMDS
+	( cd $(@D);                                 \
+	    LIBS='$(QEMU_LIBS)'                     \
+	    $(TARGET_CONFIGURE_OPTS)                \
+	    $(TARGET_CONFIGURE_ARGS)                \
+	    $(QEMU_VARS)                            \
+	    ./configure                             \
+	        --prefix=/usr                       \
+	        --cross-prefix=$(TARGET_CROSS)      \
+	        --audio-drv-list=                   \
+	        --audio-card-list=                  \
+	        --enable-kvm                        \
+	        --enable-nptl                       \
+	        --enable-attr                       \
+	        --enable-vhost-net                  \
+	        --enable-system                     \
+	        --enable-linux-user                 \
+	        --disable-bsd-user                  \
+	        --disable-xen                       \
+	        --disable-slirp                     \
+	        --disable-sdl                       \
+	        --disable-vnc                       \
+	        --disable-virtfs                    \
+	        --disable-brlapi                    \
+	        --disable-curses                    \
+	        --disable-curl                      \
+	        --disable-fdt                       \
+	        --disable-bluez                     \
+	        --disable-guest-base                \
+	        --disable-uuid                      \
+	        --disable-vde                       \
+	        --disable-linux-aio                 \
+	        --disable-cap-ng                    \
+	        --disable-docs                      \
+	        --disable-spice                     \
+	        --disable-rbd                       \
+	        --disable-libiscsi                  \
+	        --disable-usb-redir                 \
+	        --disable-guest-agent               \
+	        --disable-smartcard                 \
+	        --disable-strip                     \
+	        $(QEMU_OPTS)                        \
+	)
+endef
+
+define QEMU_BUILD_CMDS
+	$(MAKE) -C $(@D)
+endef
+
+define QEMU_INSTALL_TARGET_CMDS
+	$(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install
Quoted 8 lines

package/qemu/qemu.mk line 92

Quoted 6 lines
package/qemu/qemu.mk new file +6 -0
+endef
+
+define QEMU_UNINSTALL_TARGET_CMDS
+	@echo 'QEMU has no uninstall rule.'
+	@false
+endef

Just don't implement the UNINSTALL_TARGET_CMDS in this case.

Okydoky.

Thank you!

Regards,
Yann E. MORIN.

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#38 lore raw

PATCH 11/36 package/qemu: new package

Le Tue, 14 Aug 2012 19:03:45 +0200,
"Yann E. MORIN" <[email protected]> a ?crit :

Quoted 9 lines
Quoted 2 lines

Just curious, what's the use case for Qemu on the target? I would have seen Qemu as something useful on the host, but on the target?

I want to build a libvirt-based system to host VMs, and I do not want to use a complete distro for that : I do not care about the handy-dandy init stuff, I don't care about networking auto-managing stuff, no fscking desktop stuff... I just want a basic system that just runs a libvirt daemon, and manages the VMs.

Quoted 6 lines

I want to build a completly-static QEMU, and that's not possible on a desktop/server distro that uses glibc, because static linking still pulls the NSS libs. So, rather than creating a new 'framework', I just decided to reuse something. ;-)

I want to play! ;-)

Ok, interesting. The only thing I'm a bit worried about is that this brings Buildroot outside of its "environment to cross-compile Linux systems for embedded platforms". Although it initially probably fits the "minimal Linux system for VM hosting" use case, I'm worried that down the road the needs may diverge (for example people using Buildroot for VM hosting environments will want package management, etc.). But maybe I simply shouldn't anticipate too much on this and just see how things move.

However, on this patch set, I'd like to see at least a Ack from Peter on the general idea of merging Qemu for the target and all the required dependencies. If Peter is fine with the general idea, we can together review the implementation details, but the general idea needs to be Acked, me thinks.

Of course, other people in the community are invited to raise their voice here as well.

Thanks!

Thomas

Signature · 4 lines
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
#39 lore raw

PATCH 11/36 package/qemu: new package

Thomas, All,

Quoted 28 lines · On Friday 17 August 2012 13:26:06 Thomas Petazzoni wrote:

Le Tue, 14 Aug 2012 19:03:45 +0200,
"Yann E. MORIN" <[email protected]> a ?crit :

Quoted 9 lines
Quoted 2 lines

Just curious, what's the use case for Qemu on the target? I would have seen Qemu as something useful on the host, but on the target?

I want to build a libvirt-based system to host VMs, and I do not want to use a complete distro for that : I do not care about the handy-dandy init stuff, I don't care about networking auto-managing stuff, no fscking desktop stuff... I just want a basic system that just runs a libvirt daemon, and manages the VMs.

Quoted 6 lines

I want to build a completly-static QEMU, and that's not possible on a desktop/server distro that uses glibc, because static linking still pulls the NSS libs. So, rather than creating a new 'framework', I just decided to reuse something. ;-)

I want to play! ;-)

Ok, interesting. The only thing I'm a bit worried about is that this brings Buildroot outside of its "environment to cross-compile Linux systems for embedded platforms". Although it initially probably fits the "minimal Linux system for VM hosting" use case, I'm worried that down the road the needs may diverge (for example people using Buildroot for VM hosting environments will want package management, etc.). But maybe I simply shouldn't anticipate too much on this and just see how things move.

Quoted 8 lines

However, on this patch set, I'd like to see at least a Ack from Peter on the general idea of merging Qemu for the target and all the required dependencies. If Peter is fine with the general idea, we can together review the implementation details, but the general idea needs to be Acked, me thinks.

Of course, other people in the community are invited to raise their voice here as well.

Of course, it diverges from the original goal.

But using buildroot for this stuff is really dead-easy (besides all the time it takes to test, and dependencies, re-test and so-on... ;-) ).

I can understand that we may not want qemu upstream, but as I have this stuff here, better post them at least for review, and if people find it interesting, for upstreaming.

And yes, I too want an Ack from Peter before this is pulled.

Which should *not* be done now, I have some changes down the road (fixes from the reviews, plus local sound support (not spice)).

Regards,
Yann E. MORIN.

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#40 lore raw

PATCH 12/36 package/qemu: add basic target selection

In reply to Yann E. MORIN
---
 package/qemu/Config.in |   33 +++++++++++++++++++++++++++++++++
 package/qemu/qemu.mk   |   21 ++++++++++++++++++---
 2 files changed, 51 insertions(+), 3 deletions(-)
package/qemu/Config.in +33 -0
index a77d863..253a4ad 100644
@@ -20,5 +20,38 @@ config BR2_PACKAGE_QEMU
 	  
 	  http://qemu.org/
 
+if BR2_PACKAGE_QEMU
+
+comment "Emulators selection"
+
+# We need at least one to be selected
+config BR2_PACKAGE_QEMU_EMUL_SET
+	bool
+
+config BR2_PACKAGE_QEMU_FORCE_SYSTEM
+	bool
+	default n if BR2_PACKAGE_QEMU_EMUL_SET
+	default y if ! BR2_PACKAGE_QEMU_EMUL_SET
+	select BR2_PACKAGE_QEMU_SYSTEM
+
+config BR2_PACKAGE_QEMU_SYSTEM
+	bool "Enable all systems emulation"
+	help
+	  Say 'y' to build all system emulators/virtualisers that QEMU supports.
+
+config BR2_PACKAGE_QEMU_LINUX_USER
+	bool "Enable all Linux user-land emulation"
+	select BR2_PACKAGE_QEMU_EMUL_SET
+	help
+	  Say 'y' to build all Linux user-land emulators that QEMU supports.
+
+config BR2_PACKAGE_QEMU_BSD_USER
+	bool "Enable all BSD user-land emulation"
+	select BR2_PACKAGE_QEMU_EMUL_SET
+	help
+	  Say 'y' to build all BSD user-land emulators that QEMU supports.
+
+endif # BR2_PACKAGE_QEMU
+
 comment "QEMU requires python"
 	depends on !BR2_PACKAGE_PYTHON
package/qemu/qemu.mk +18 -3
index 3825731..34d9dd1 100644
@@ -25,6 +25,24 @@ QEMU_LIBS = -lrt -lm
 QEMU_OPTS =
 QEMU_VARS =
 
+ifeq ($(BR2_PACKAGE_QEMU_SYSTEM),y)
+QEMU_OPTS += --enable-system
+else
+QEMU_OPTS += --disable-system
+endif
+
+ifeq ($(BR2_PACKAGE_QEMU_LINUX_USER),y)
+QEMU_OPTS += --enable-linux-user
+else
+QEMU_OPTS += --disable-linux-user
+endif
+
+ifeq ($(BR2_PACKAGE_QEMU_BSD_USER),y)
+QEMU_OPTS += --enable-bsd-user
+else
+QEMU_OPTS += --disable-bsd-user
+endif
+
 #----------------------------------------------------------------------------
 # Package build process
 
@@ -48,9 +66,6 @@ define QEMU_CONFIGURE_CMDS
 	        --enable-nptl                       \
 	        --enable-attr                       \
 	        --enable-vhost-net                  \
-	        --enable-system                     \
-	        --enable-linux-user                 \
-	        --disable-bsd-user                  \
 	        --disable-xen                       \
 	        --disable-slirp                     \
 	        --disable-sdl                       \
Signature · 1 line
1.7.2.5
#41 lore raw

PATCH 13/36 package/qemu: add fine-grained target selection

In reply to Yann E. MORIN
---
 package/qemu/Config.in |   21 +++++++++++++++++++++
 package/qemu/qemu.mk   |    4 ++++
 2 files changed, 25 insertions(+), 0 deletions(-)
package/qemu/Config.in +21 -0
index 253a4ad..ba9b1d6 100644
@@ -24,6 +24,25 @@ if BR2_PACKAGE_QEMU
 
 comment "Emulators selection"
 
+config BR2_PACKAGE_QEMU_CUSTOM_TARGETS
+	string "Enable specific targets"
+	help
+	  Enter here the list of QEMU targets you want to build. For example:
+
+	    System emulation      | User-land emulation
+	    ----------------------+-----------------------
+	    i386-softmmu          | i386-linux-user
+	    arm-softmmu           | ppc-linux-user
+	    x86_64-softmmu        | sparc-bsd-user
+	    ...                   | ...
+
+config QEMU_FOO
+	bool # To break the indentation
+
+if BR2_PACKAGE_QEMU_CUSTOM_TARGETS = ""
+
+comment "... or you can select emulator families to enable, below:"
+
 # We need at least one to be selected
 config BR2_PACKAGE_QEMU_EMUL_SET
 	bool
@@ -51,6 +70,8 @@ config BR2_PACKAGE_QEMU_BSD_USER
 	help
 	  Say 'y' to build all BSD user-land emulators that QEMU supports.
 
+endif # BR2_PACKAGE_QEMU_CUSTOM_TARGETS == ""
+
 endif # BR2_PACKAGE_QEMU
 
 comment "QEMU requires python"
package/qemu/qemu.mk +4 -0
index 34d9dd1..b1f7071 100644
@@ -43,6 +43,10 @@ else
 QEMU_OPTS += --disable-bsd-user
 endif
 
+ifneq ($(call qstrip,$(BR2_PACKAGE_QEMU_CUSTOM_TARGETS)),)
+QEMU_OPTS += --target-list="$(call qstrip,$(BR2_PACKAGE_QEMU_CUSTOM_TARGETS))"
+endif
+
 #----------------------------------------------------------------------------
 # Package build process
 
Signature · 1 line
1.7.2.5
#42 lore raw

PATCH 14/36 package/qemu: add SDL frontends

In reply to Yann E. MORIN
---
 package/qemu/Config.in |    9 +++++++++
 package/qemu/qemu.mk   |    8 +++++++-
 2 files changed, 16 insertions(+), 1 deletions(-)
package/qemu/Config.in +9 -0
index ba9b1d6..4f678a7 100644
@@ -72,6 +72,15 @@ config BR2_PACKAGE_QEMU_BSD_USER
 
 endif # BR2_PACKAGE_QEMU_CUSTOM_TARGETS == ""
 
+comment "Frontends"
+
+config BR2_PACKAGE_QEMU_SDL
+	bool "Enable SDL frontend"
+	select BR2_PACKAGE_SDL
+	help
+	  Say 'y' to enable the SDL frontend, that is, a graphical window
+	  presenting the VM's display.
+
 endif # BR2_PACKAGE_QEMU
 
 comment "QEMU requires python"
package/qemu/qemu.mk +7 -1
index b1f7071..f210866 100644
@@ -47,6 +47,13 @@ ifneq ($(call qstrip,$(BR2_PACKAGE_QEMU_CUSTOM_TARGETS)),)
 QEMU_OPTS += --target-list="$(call qstrip,$(BR2_PACKAGE_QEMU_CUSTOM_TARGETS))"
 endif
 
+ifeq ($(BR2_PACKAGE_QEMU_SDL),y)
+QEMU_OPTS += --enable-sdl
+QEMU_DEPENDENCIES += sdl
+else
+QEMU_OPTS += --disable-sdl
+endif
+
 #----------------------------------------------------------------------------
 # Package build process
 
@@ -72,7 +79,6 @@ define QEMU_CONFIGURE_CMDS
 	        --enable-vhost-net                  \
 	        --disable-xen                       \
 	        --disable-slirp                     \
-	        --disable-sdl                       \
 	        --disable-vnc                       \
 	        --disable-virtfs                    \
 	        --disable-brlapi                    \
Signature · 1 line
1.7.2.5
#43 lore raw

PATCH 15/36 package/qemu: add option to enable/disable the VNC frontend

In reply to Yann E. MORIN
---
 package/qemu/Config.in |    7 +++++++
 package/qemu/qemu.mk   |   11 ++++++++++-
 2 files changed, 17 insertions(+), 1 deletions(-)
package/qemu/Config.in +7 -0
index 4f678a7..bf24126 100644
@@ -74,6 +74,13 @@ endif # BR2_PACKAGE_QEMU_CUSTOM_TARGETS == ""
 
 comment "Frontends"
 
+config BR2_PACKAGE_QEMU_VNC
+	bool "Enable VNC frontend"
+	select BR2_PACKAGE_VNC
+	help
+	  Say 'y' to enable the VNC frontend, that is, QEMU will act as a
+	  VNC server presenting the VM's display.
+
 config BR2_PACKAGE_QEMU_SDL
 	bool "Enable SDL frontend"
 	select BR2_PACKAGE_SDL
package/qemu/qemu.mk +10 -1
index f210866..caed5ee 100644
@@ -47,6 +47,12 @@ ifneq ($(call qstrip,$(BR2_PACKAGE_QEMU_CUSTOM_TARGETS)),)
 QEMU_OPTS += --target-list="$(call qstrip,$(BR2_PACKAGE_QEMU_CUSTOM_TARGETS))"
 endif
 
+ifeq ($(BR2_PACKAGE_QEMU_VNC),y)
+QEMU_OPTS += --enable-vnc
+else
+QEMU_OPTS += --disable-vnc
+endif
+
 ifeq ($(BR2_PACKAGE_QEMU_SDL),y)
 QEMU_OPTS += --enable-sdl
 QEMU_DEPENDENCIES += sdl
@@ -79,7 +85,10 @@ define QEMU_CONFIGURE_CMDS
 	        --enable-vhost-net                  \
 	        --disable-xen                       \
 	        --disable-slirp                     \
-	        --disable-vnc                       \
+	        --disable-vnc-jpeg                  \
+	        --disable-vnc-png                   \
+	        --disable-vnc-tls                   \
+	        --disable-vnc-sasl                  \
 	        --disable-virtfs                    \
 	        --disable-brlapi                    \
 	        --disable-curses                    \
Signature · 1 line
1.7.2.5
#44 lore raw

PATCH 16/36 package/qemu: add VNC jpeg and png compression

In reply to Yann E. MORIN
---
 package/qemu/Config.in |   10 ++++++++++
 package/qemu/qemu.mk   |   16 ++++++++++++++--
 2 files changed, 24 insertions(+), 2 deletions(-)
package/qemu/Config.in +10 -0
index bf24126..813dad3 100644
@@ -81,6 +81,16 @@ config BR2_PACKAGE_QEMU_VNC
 	  Say 'y' to enable the VNC frontend, that is, QEMU will act as a
 	  VNC server presenting the VM's display.
 
+config BR2_PACKAGE_QEMU_VNC_PNG
+	bool "PNG compression"
+	depends on BR2_PACKAGE_QEMU_VNC
+	select BR2_PACKAGE_LIBPNG
+
+config BR2_PACKAGE_QEMU_VNC_JPEG
+	bool "JPEG compression"
+	depends on BR2_PACKAGE_QEMU_VNC
+	select BR2_PACKAGE_JPEG
+
 config BR2_PACKAGE_QEMU_SDL
 	bool "Enable SDL frontend"
 	select BR2_PACKAGE_SDL
package/qemu/qemu.mk +14 -2
index caed5ee..58d8dca 100644
@@ -53,6 +53,20 @@ else
 QEMU_OPTS += --disable-vnc
 endif
 
+ifeq ($(BR2_PACKAGE_QEMU_VNC_PNG),y)
+QEMU_OPTS += --enable-vnc-png
+QEMU_DEPENDENCIES += libpng
+else
+QEMU_OPTS += --disable-vnc-png
+endif
+
+ifeq ($(BR2_PACKAGE_QEMU_VNC_JPEG),y)
+QEMU_OPTS += --enable-vnc-jpeg
+QEMU_DEPENDENCIES += jpeg
+else
+QEMU_OPTS += --disable-vnc-jpeg
+endif
+
 ifeq ($(BR2_PACKAGE_QEMU_SDL),y)
 QEMU_OPTS += --enable-sdl
 QEMU_DEPENDENCIES += sdl
@@ -85,8 +99,6 @@ define QEMU_CONFIGURE_CMDS
 	        --enable-vhost-net                  \
 	        --disable-xen                       \
 	        --disable-slirp                     \
-	        --disable-vnc-jpeg                  \
-	        --disable-vnc-png                   \
 	        --disable-vnc-tls                   \
 	        --disable-vnc-sasl                  \
 	        --disable-virtfs                    \
Signature · 1 line
1.7.2.5
#45 lore raw

PATCH 17/36 package/qemu: add VNC TLS-encryption

In reply to Yann E. MORIN

Only TLS is supported, as buildroot has no package for the SASL library.

---
 package/qemu/Config.in |   11 +++++++++++
 package/qemu/qemu.mk   |    8 +++++++-
 2 files changed, 18 insertions(+), 1 deletions(-)
package/qemu/Config.in +11 -0
index 813dad3..a43012f 100644
@@ -91,6 +91,17 @@ config BR2_PACKAGE_QEMU_VNC_JPEG
 	depends on BR2_PACKAGE_QEMU_VNC
 	select BR2_PACKAGE_JPEG
 
+# TLS does not work with static link, because the gnutls .pc is missing a
+# dependency on libintl... :-(
+config BR2_PACKAGE_QEMU_VNC_TLS
+	bool "TLS encryption"
+	depends on BR2_PACKAGE_QEMU_VNC
+	depends on !BR2_PREFER_STATIC_LIB
+	select BR2_PACKAGE_GNUTLS
+
+comment "VNC TLS encryption does not work for static link"
+    depends on BR2_PACKAGE_QEMU_VNC && BR2_PREFER_STATIC_LIB
+
 config BR2_PACKAGE_QEMU_SDL
 	bool "Enable SDL frontend"
 	select BR2_PACKAGE_SDL
package/qemu/qemu.mk +7 -1
index 58d8dca..020d1a2 100644
@@ -67,6 +67,13 @@ else
 QEMU_OPTS += --disable-vnc-jpeg
 endif
 
+ifeq ($(BR2_PACKAGE_QEMU_VNC_TLS),y)
+QEMU_OPTS += --enable-vnc-tls
+QEMU_DEPENDENCIES += gnutls
+else
+QEMU_OPTS += --disable-vnc-tls
+endif
+
 ifeq ($(BR2_PACKAGE_QEMU_SDL),y)
 QEMU_OPTS += --enable-sdl
 QEMU_DEPENDENCIES += sdl
@@ -99,7 +106,6 @@ define QEMU_CONFIGURE_CMDS
 	        --enable-vhost-net                  \
 	        --disable-xen                       \
 	        --disable-slirp                     \
-	        --disable-vnc-tls                   \
 	        --disable-vnc-sasl                  \
 	        --disable-virtfs                    \
 	        --disable-brlapi                    \
Signature · 1 line
1.7.2.5
#46 lore raw

PATCH 18/36 package/qemu: add option to not install blobs

In reply to Yann E. MORIN
---
 package/qemu/Config.in |   16 ++++++++++++++++
 package/qemu/qemu.mk   |    4 ++++
 2 files changed, 20 insertions(+), 0 deletions(-)
package/qemu/Config.in +16 -0
index a43012f..e34680c 100644
@@ -109,6 +109,22 @@ config BR2_PACKAGE_QEMU_SDL
 	  Say 'y' to enable the SDL frontend, that is, a graphical window
 	  presenting the VM's display.
 
+comment "Misc. features"
+
+config BR2_PACKAGE_QEMU_BLOBS
+	bool "Install binary blobs"
+	default y
+	help
+	  Say 'y' here (the default) to install binary blobs (such as BIOS
+	  or firmwares for the different machines simulated by QEMU).
+	  Say 'n' to not install those blobs.	  
+	  
+	  Note: Some machines may be unbootable without those blobs.
+	        If unsure, say 'y'.
+	  
+	  Note2: This has nothing to do with the licensing of the blobs;
+	         some (most?) even have a free and/or open source license.
+
 endif # BR2_PACKAGE_QEMU
 
 comment "QEMU requires python"
package/qemu/qemu.mk +4 -0
index 020d1a2..cd473f8 100644
@@ -81,6 +81,10 @@ else
 QEMU_OPTS += --disable-sdl
 endif
 
+ifeq ($(BR2_PACKAGE_QEMU_BLOBS),)
+QEMU_OPTS += --disable-blobs
+endif
+
 #----------------------------------------------------------------------------
 # Package build process
 
Signature · 1 line
1.7.2.5
#47 lore raw

PATCH 19/36 package/qemu: add option to remove unwanted keymaps

In reply to Yann E. MORIN
---
 package/qemu/Config.in |   12 ++++++++++
 package/qemu/qemu.mk   |   58 ++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 70 insertions(+), 0 deletions(-)
package/qemu/Config.in +12 -0
index e34680c..0ae7fc3 100644
@@ -125,6 +125,18 @@ config BR2_PACKAGE_QEMU_BLOBS
 	  Note2: This has nothing to do with the licensing of the blobs;
 	         some (most?) even have a free and/or open source license.
 
+config BR2_PACKAGE_QEMU_KEYMAPS
+	string "Keymaps to keep"
+	default "all"
+	help
+	  Enter the list of keymap(s) to keep. To keep many keymaps, you can
+	  use shell globs, or you can enter a space-separated list of keymaps:
+	    - empty to remove all keymaps
+	    - 'all' to keep all keymaps
+	    - 'fr*' to keep all french keymaps
+	    - 'de fr* en-*' for german, french and english keymaps
+	    - and so on (see the QEMU source for all supported keymaps)
+
 endif # BR2_PACKAGE_QEMU
 
 comment "QEMU requires python"
package/qemu/qemu.mk +58 -0

64 lines not on this page · raw message

Signature · 1 line
1.7.2.5
#48 lore raw

PATCH 20/36 package/qemu: add uuid support

In reply to Yann E. MORIN
---
 package/qemu/Config.in |    7 +++++++
 package/qemu/qemu.mk   |    8 +++++++-
 2 files changed, 14 insertions(+), 1 deletions(-)
package/qemu/Config.in +7 -0
index 0ae7fc3..ea85e5f 100644
@@ -111,6 +111,13 @@ config BR2_PACKAGE_QEMU_SDL
 
 comment "Misc. features"
 
+config BR2_PACKAGE_QEMU_UUID
+	bool "Enable VMs UUID"
+	select BR2_PACKAGE_UTIL_LINUX
+	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
+	help
+	  Say 'y' here to have QEMU support UUIDs for VMs.
+
 config BR2_PACKAGE_QEMU_BLOBS
 	bool "Install binary blobs"
 	default y
package/qemu/qemu.mk +7 -1
index c00209b..3806fa7 100644
@@ -81,6 +81,13 @@ else
 QEMU_OPTS += --disable-sdl
 endif
 
+ifeq ($(BR2_PACKAGE_QEMU_UUID),y)
+QEMU_OPTS += --enable-uuid
+QEMU_DEPENDENCIES += util-linux
+else
+QEMU_OPTS += --disable-uuid
+endif
+
 ifeq ($(BR2_PACKAGE_QEMU_BLOBS),)
 QEMU_OPTS += --disable-blobs
 endif
@@ -176,7 +183,6 @@ define QEMU_CONFIGURE_CMDS
 	        --disable-fdt                       \
 	        --disable-bluez                     \
 	        --disable-guest-base                \
-	        --disable-uuid                      \
 	        --disable-vde                       \
 	        --disable-linux-aio                 \
 	        --disable-cap-ng                    \
Signature · 1 line
1.7.2.5
#49 lore raw

PATCH 21/36 package/qemu: add support for capabilities

In reply to Yann E. MORIN
---
 package/qemu/Config.in |    7 +++++++
 package/qemu/qemu.mk   |   11 ++++++++++-
 2 files changed, 17 insertions(+), 1 deletions(-)
package/qemu/Config.in +7 -0
index ea85e5f..8cdcd08 100644
@@ -118,6 +118,13 @@ config BR2_PACKAGE_QEMU_UUID
 	help
 	  Say 'y' here to have QEMU support UUIDs for VMs.
 
+config BR2_PACKAGE_QEMU_CAP
+	bool "Enable capabilities"
+	select BR2_PACKAGE_LIBCAP
+	select BR2_PACKAGE_LIBCAP_NG
+	help
+	  Say 'y' here if you want QEMU to support capabilities.
+
 config BR2_PACKAGE_QEMU_BLOBS
 	bool "Install binary blobs"
 	default y
package/qemu/qemu.mk +10 -1
index 3806fa7..17459ba 100644
@@ -88,6 +88,16 @@ else
 QEMU_OPTS += --disable-uuid
 endif
 
+# There's no configure flag to disable use of libcap
+# so we must use an environment variable
+ifeq ($(BR2_PACKAGE_QEMU_CAP),y)
+QEMU_OPTS += --enable-cap-ng
+QEMU_DEPENDENCIES += libcap libcap-ng
+else
+QEMU_OPTS += --disable-cap-ng
+QEMU_VARS += cap=no
+endif
+
 ifeq ($(BR2_PACKAGE_QEMU_BLOBS),)
 QEMU_OPTS += --disable-blobs
 endif
@@ -185,7 +195,6 @@ define QEMU_CONFIGURE_CMDS
 	        --disable-guest-base                \
 	        --disable-vde                       \
 	        --disable-linux-aio                 \
-	        --disable-cap-ng                    \
 	        --disable-docs                      \
 	        --disable-spice                     \
 	        --disable-rbd                       \
Signature · 1 line
1.7.2.5
#50 lore raw

PATCH 22/36 package/qemu: add attr/xattr option

In reply to Yann E. MORIN
---
 package/qemu/Config.in |    6 ++++++
 package/qemu/qemu.mk   |    7 ++++++-
 2 files changed, 12 insertions(+), 1 deletions(-)
package/qemu/Config.in +6 -0
index 8cdcd08..8ed5dcb 100644
@@ -125,6 +125,12 @@ config BR2_PACKAGE_QEMU_CAP
 	help
 	  Say 'y' here if you want QEMU to support capabilities.
 
+config BR2_PACKAGE_QEMU_ATTR
+	bool "Enable attr and xattr"
+	help
+	  Say 'y' here to have QEMU support attributes (attr) and eXtended
+	  attibutes (xattr).
+
 config BR2_PACKAGE_QEMU_BLOBS
 	bool "Install binary blobs"
 	default y
package/qemu/qemu.mk +6 -1
index 17459ba..4a6080e 100644
@@ -98,6 +98,12 @@ QEMU_OPTS += --disable-cap-ng
 QEMU_VARS += cap=no
 endif
 
+ifeq ($(BR2_PACKAGE_QEMU_ATTR),y)
+QEMU_OPTS += --enable-attr
+else
+QEMU_OPTS += --disable-attr
+endif
+
 ifeq ($(BR2_PACKAGE_QEMU_BLOBS),)
 QEMU_OPTS += --disable-blobs
 endif
@@ -181,7 +187,6 @@ define QEMU_CONFIGURE_CMDS
 	        --audio-card-list=                  \
 	        --enable-kvm                        \
 	        --enable-nptl                       \
-	        --enable-attr                       \
 	        --enable-vhost-net                  \
 	        --disable-xen                       \
 	        --disable-slirp                     \
Signature · 1 line
1.7.2.5
#51 lore raw

PATCH 23/36 package/qemu: add support for virtfs

In reply to Yann E. MORIN
---
 package/qemu/Config.in |   16 ++++++++++++++++
 package/qemu/qemu.mk   |    7 ++++++-
 2 files changed, 22 insertions(+), 1 deletions(-)
package/qemu/Config.in +16 -0
index 8ed5dcb..498a5a6 100644
@@ -109,6 +109,22 @@ config BR2_PACKAGE_QEMU_SDL
 	  Say 'y' to enable the SDL frontend, that is, a graphical window
 	  presenting the VM's display.
 
+comment "Block backends"
+
+config BR2_PACKAGE_QEMU_VIRTFS
+	bool "Enable plan9 ressources using VirtFS"
+	select BR2_PACKAGE_QEMU_CAP
+	select BR2_PACKAGE_QEMU_ATTR
+	help
+	  Say 'y' here if you want QEMU to provide a plan9 virtual "share"
+	  accessible from the guest OS for relatively fast access to host
+	  files.
+	  
+	  This requires that the guest OS is capable of accessing plan9
+	  ressources (typically, in Linux, this is done by a network
+	  file-system called 9p, and can be accelerated by using the 9p
+	  virtio).
+
 comment "Misc. features"
 
 config BR2_PACKAGE_QEMU_UUID
package/qemu/qemu.mk +6 -1
index 4a6080e..caaf077 100644
@@ -81,6 +81,12 @@ else
 QEMU_OPTS += --disable-sdl
 endif
 
+ifeq ($(BR2_PACKAGE_QEMU_VIRTFS),y)
+QEMU_OPTS += --enable-virtfs
+else
+QEMU_OPTS += --disable-virtfs
+endif
+
 ifeq ($(BR2_PACKAGE_QEMU_UUID),y)
 QEMU_OPTS += --enable-uuid
 QEMU_DEPENDENCIES += util-linux
@@ -191,7 +197,6 @@ define QEMU_CONFIGURE_CMDS
 	        --disable-xen                       \
 	        --disable-slirp                     \
 	        --disable-vnc-sasl                  \
-	        --disable-virtfs                    \
 	        --disable-brlapi                    \
 	        --disable-curses                    \
 	        --disable-curl                      \
Signature · 1 line
1.7.2.5
#52 lore raw

PATCH 24/36 package/qemu: add support for cURL

In reply to Yann E. MORIN

QEMU can use libcurl as a block backend, to access remote block devices.

---
 package/qemu/Config.in |   10 ++++++++++
 package/qemu/qemu.mk   |    8 +++++++-
 2 files changed, 17 insertions(+), 1 deletions(-)
package/qemu/Config.in +10 -0
index 498a5a6..bbcd308 100644
@@ -125,6 +125,16 @@ config BR2_PACKAGE_QEMU_VIRTFS
 	  file-system called 9p, and can be accelerated by using the 9p
 	  virtio).
 
+config BR2_PACKAGE_QEMU_CURL
+	bool "Enable remote block-devices using cURL"
+	depends on !BR2_PREFER_STATIC_LIB
+	select BR2_PACKAGE_LIBCURL
+	help
+	  Say 'y' to access remote block-devices using libcurl.
+
+comment "cURL support is not possible with static linking"
+    depends on BR2_PREFER_STATIC_LIB
+
 comment "Misc. features"
 
 config BR2_PACKAGE_QEMU_UUID
package/qemu/qemu.mk +7 -1
index caaf077..fb1bbcd 100644
@@ -87,6 +87,13 @@ else
 QEMU_OPTS += --disable-virtfs
 endif
 
+ifeq ($(BR2_PACKAGE_QEMU_CURL),y)
+QEMU_OPTS += --enable-curl
+QEMU_DEPENDENCIES += libcurl
+else
+QEMU_OPTS += --disable-curl
+endif
+
 ifeq ($(BR2_PACKAGE_QEMU_UUID),y)
 QEMU_OPTS += --enable-uuid
 QEMU_DEPENDENCIES += util-linux
@@ -199,7 +206,6 @@ define QEMU_CONFIGURE_CMDS
 	        --disable-vnc-sasl                  \
 	        --disable-brlapi                    \
 	        --disable-curses                    \
-	        --disable-curl                      \
 	        --disable-fdt                       \
 	        --disable-bluez                     \
 	        --disable-guest-base                \
Signature · 1 line
1.7.2.5
#53 lore raw

PATCH 25/36 package/qemu: enable use of the curses frontend

In reply to Yann E. MORIN
---
 package/qemu/Config.in |   11 +++++++++++
 package/qemu/qemu.mk   |    8 +++++++-
 2 files changed, 18 insertions(+), 1 deletions(-)
package/qemu/Config.in +11 -0
index bbcd308..e2864f4 100644
@@ -109,6 +109,17 @@ config BR2_PACKAGE_QEMU_SDL
 	  Say 'y' to enable the SDL frontend, that is, a graphical window
 	  presenting the VM's display.
 
+config BR2_PACKAGE_QEMU_CURSES
+	bool "Enable the curses frontend"
+	select BR2_PACKAGE_NCURSES
+	help
+	  Say 'y' to use curses to display the text-mode of VGA outpout.
+	  
+	  If the VM's graphic adapter does not support VGA text-mode, or it
+	  is in graphical mode, then nothing will be displayed with this
+	  frontend (although you can still use the SDL or VNC frontends to
+	  display the graphical output).
+
 comment "Block backends"
 
 config BR2_PACKAGE_QEMU_VIRTFS
package/qemu/qemu.mk +7 -1
index fb1bbcd..31e3d0c 100644
@@ -81,6 +81,13 @@ else
 QEMU_OPTS += --disable-sdl
 endif
 
+ifeq ($(BR2_PACKAGE_QEMU_CURSES),y)
+QEMU_OPTS += --enable-curses
+QEMU_DEPENDENCIES += ncurses
+else
+QEMU_OPTS += --disable-curses
+endif
+
 ifeq ($(BR2_PACKAGE_QEMU_VIRTFS),y)
 QEMU_OPTS += --enable-virtfs
 else
@@ -205,7 +212,6 @@ define QEMU_CONFIGURE_CMDS
 	        --disable-slirp                     \
 	        --disable-vnc-sasl                  \
 	        --disable-brlapi                    \
-	        --disable-curses                    \
 	        --disable-fdt                       \
 	        --disable-bluez                     \
 	        --disable-guest-base                \
Signature · 1 line
1.7.2.5
#54 lore raw

PATCH 26/36 package/qemu: add BlueZ connectivity

In reply to Yann E. MORIN
---
 package/qemu/Config.in |   11 +++++++++++
 package/qemu/qemu.mk   |    8 +++++++-
 2 files changed, 18 insertions(+), 1 deletions(-)
package/qemu/Config.in +11 -0
index e2864f4..a55d7b5 100644
@@ -146,6 +146,17 @@ config BR2_PACKAGE_QEMU_CURL
 comment "cURL support is not possible with static linking"
     depends on BR2_PREFER_STATIC_LIB
 
+comment "Networking"
+
+config BR2_PACKAGE_QEMU_BLUEZ
+	bool "Enable BlueZ connectivity"
+	depends on BR2_PACKAGE_BLUEZ_UTILS
+	help
+	  Say 'y' here to enable BlueZ (bluetooth) connectivity in QEMU.
+
+comment "BlueZ connectivity depends on bluez-utils"
+	depends on !BR2_PACKAGE_BLUEZ_UTILS
+
 comment "Misc. features"
 
 config BR2_PACKAGE_QEMU_UUID
package/qemu/qemu.mk +7 -1
index 31e3d0c..f64f627 100644
@@ -101,6 +101,13 @@ else
 QEMU_OPTS += --disable-curl
 endif
 
+ifeq ($(BR2_PACKAGE_QEMU_BLUEZ),y)
+QEMU_OPTS += --enable-bluez
+QEMU_DEPENDENCIES += bluez_utils
+else
+QEMU_OPTS += --disable-bluez
+endif
+
 ifeq ($(BR2_PACKAGE_QEMU_UUID),y)
 QEMU_OPTS += --enable-uuid
 QEMU_DEPENDENCIES += util-linux
@@ -213,7 +220,6 @@ define QEMU_CONFIGURE_CMDS
 	        --disable-vnc-sasl                  \
 	        --disable-brlapi                    \
 	        --disable-fdt                       \
-	        --disable-bluez                     \
 	        --disable-guest-base                \
 	        --disable-vde                       \
 	        --disable-linux-aio                 \
Signature · 1 line
1.7.2.5
#55 lore raw

PATCH 27/36 package/qemu: add AIO support

In reply to Yann E. MORIN

Add support for Asynchronous Input/Ouput (AIO).

---
 package/qemu/Config.in |    9 +++++++++
 package/qemu/qemu.mk   |    8 +++++++-
 2 files changed, 16 insertions(+), 1 deletions(-)
package/qemu/Config.in +9 -0
index a55d7b5..c1628a9 100644
@@ -146,6 +146,15 @@ config BR2_PACKAGE_QEMU_CURL
 comment "cURL support is not possible with static linking"
     depends on BR2_PREFER_STATIC_LIB
 
+config BR2_PACKAGE_QEMU_AIO
+	bool "Enable AIO"
+	depends on BR2_PACKAGE_LIBAIO
+	help
+	  Say 'y' here to enable Asynchronous Input/Output (AIO).
+
+comment "AIO support depends on libaio"
+	depends on !BR2_PACKAGE_LIBAIO
+
 comment "Networking"
 
 config BR2_PACKAGE_QEMU_BLUEZ
package/qemu/qemu.mk +7 -1
index f64f627..58eb9f1 100644
@@ -101,6 +101,13 @@ else
 QEMU_OPTS += --disable-curl
 endif
 
+ifeq ($(BR2_PACKAGE_QEMU_AIO),y)
+QEMU_OPTS += --enable-linux-aio
+QEMU_DEPENDENCIES += libaio
+else
+QEMU_OPTS += --disable-linux-aio
+endif
+
 ifeq ($(BR2_PACKAGE_QEMU_BLUEZ),y)
 QEMU_OPTS += --enable-bluez
 QEMU_DEPENDENCIES += bluez_utils
@@ -222,7 +229,6 @@ define QEMU_CONFIGURE_CMDS
 	        --disable-fdt                       \
 	        --disable-guest-base                \
 	        --disable-vde                       \
-	        --disable-linux-aio                 \
 	        --disable-docs                      \
 	        --disable-spice                     \
 	        --disable-rbd                       \
Signature · 1 line
1.7.2.5
#56 lore raw

PATCH 28/36 package/qemu: add support for FDT

In reply to Yann E. MORIN

FDT is the Flat Device Tree, and allows QEMU to pass DTs to the VMs.

---
 package/qemu/Config.in |    7 +++++++
 package/qemu/qemu.mk   |    8 +++++++-
 2 files changed, 14 insertions(+), 1 deletions(-)
package/qemu/Config.in +7 -0
index c1628a9..7142c09 100644
@@ -168,6 +168,13 @@ comment "BlueZ connectivity depends on bluez-utils"
 
 comment "Misc. features"
 
+config BR2_PACKAGE_QEMU_FDT
+        bool "Enable FDT"
+        select BR2_PACKAGE_LIBFDT
+        help
+          Say 'y' here to have QEMU capable of constructing Device Trees,
+          and passing them to the VMs.
+
 config BR2_PACKAGE_QEMU_UUID
 	bool "Enable VMs UUID"
 	select BR2_PACKAGE_UTIL_LINUX
package/qemu/qemu.mk +7 -1
index 58eb9f1..4d888a8 100644
@@ -115,6 +115,13 @@ else
 QEMU_OPTS += --disable-bluez
 endif
 
+ifeq ($(BR2_PACKAGE_QEMU_FDT),y)
+QEMU_OPTS += --enable-fdt
+QEMU_DEPENDENCIES += libfdt
+else
+QEMU_OPTS += --disable-fdt
+endif
+
 ifeq ($(BR2_PACKAGE_QEMU_UUID),y)
 QEMU_OPTS += --enable-uuid
 QEMU_DEPENDENCIES += util-linux
@@ -226,7 +233,6 @@ define QEMU_CONFIGURE_CMDS
 	        --disable-slirp                     \
 	        --disable-vnc-sasl                  \
 	        --disable-brlapi                    \
-	        --disable-fdt                       \
 	        --disable-guest-base                \
 	        --disable-vde                       \
 	        --disable-docs                      \
Signature · 1 line
1.7.2.5
#57 lore raw

PATCH 29/36 package/qemu: add support for VDE switches

In reply to Yann E. MORIN
---
 package/qemu/Config.in |    7 +++++++
 package/qemu/qemu.mk   |    8 +++++++-
 2 files changed, 14 insertions(+), 1 deletions(-)
package/qemu/Config.in +7 -0
index 7142c09..847c137 100644
@@ -166,6 +166,13 @@ config BR2_PACKAGE_QEMU_BLUEZ
 comment "BlueZ connectivity depends on bluez-utils"
 	depends on !BR2_PACKAGE_BLUEZ_UTILS
 
+config BR2_PACKAGE_QEMU_VDE
+	bool "Enable VDE"
+	select BR2_PACKAGE_VDE2
+	help
+	  Say 'y' here to have QEMU connect to VDE (Virtual Distributed
+	  Ethernet) switches.
+
 comment "Misc. features"
 
 config BR2_PACKAGE_QEMU_FDT
package/qemu/qemu.mk +7 -1
index 4d888a8..b0f6512 100644
@@ -115,6 +115,13 @@ else
 QEMU_OPTS += --disable-bluez
 endif
 
+ifeq ($(BR2_PACKAGE_QEMU_VDE),y)
+QEMU_OPTS += --enable-vde
+QEMU_DEPENDENCIES += vde2
+else
+QEMU_OPTS += --disable-vde
+endif
+
 ifeq ($(BR2_PACKAGE_QEMU_FDT),y)
 QEMU_OPTS += --enable-fdt
 QEMU_DEPENDENCIES += libfdt
@@ -234,7 +241,6 @@ define QEMU_CONFIGURE_CMDS
 	        --disable-vnc-sasl                  \
 	        --disable-brlapi                    \
 	        --disable-guest-base                \
-	        --disable-vde                       \
 	        --disable-docs                      \
 	        --disable-spice                     \
 	        --disable-rbd                       \
Signature · 1 line
1.7.2.5
#58 lore raw

PATCH 30/36 package/qemu: add iSCSI support

In reply to Yann E. MORIN
---
 package/qemu/Config.in |    6 ++++++
 package/qemu/qemu.mk   |    8 +++++++-
 2 files changed, 13 insertions(+), 1 deletions(-)
package/qemu/Config.in +6 -0
index 847c137..e81a089 100644
@@ -146,6 +146,12 @@ config BR2_PACKAGE_QEMU_CURL
 comment "cURL support is not possible with static linking"
     depends on BR2_PREFER_STATIC_LIB
 
+config BR2_PACKAGE_QEMU_ISCSI
+	bool "Enable remote block-devices using iSCSI"
+	select BR2_PACKAGE_LIBISCSI
+	help
+	  Say 'y' here to have QEMU use iSCSI targets as block-devices.
+
 config BR2_PACKAGE_QEMU_AIO
 	bool "Enable AIO"
 	depends on BR2_PACKAGE_LIBAIO
package/qemu/qemu.mk +7 -1
index b0f6512..4436047 100644
@@ -101,6 +101,13 @@ else
 QEMU_OPTS += --disable-curl
 endif
 
+ifeq ($(BR2_PACKAGE_QEMU_ISCSI),y)
+QEMU_OPTS += --enable-libiscsi
+QEMU_DEPENDENCIES += libiscsi
+else
+QEMU_OPTS += --disable-libiscsi
+endif
+
 ifeq ($(BR2_PACKAGE_QEMU_AIO),y)
 QEMU_OPTS += --enable-linux-aio
 QEMU_DEPENDENCIES += libaio
@@ -244,7 +251,6 @@ define QEMU_CONFIGURE_CMDS
 	        --disable-docs                      \
 	        --disable-spice                     \
 	        --disable-rbd                       \
-	        --disable-libiscsi                  \
 	        --disable-usb-redir                 \
 	        --disable-guest-agent               \
 	        --disable-smartcard                 \
Signature · 1 line
1.7.2.5
#59 lore raw

PATCH 31/36 package/qemu: add support for USB redirection

In reply to Yann E. MORIN
---
 package/qemu/Config.in |    9 +++++++++
 package/qemu/qemu.mk   |    8 +++++++-
 2 files changed, 16 insertions(+), 1 deletions(-)
package/qemu/Config.in +9 -0
index e81a089..b56fef4 100644
@@ -152,6 +152,15 @@ config BR2_PACKAGE_QEMU_ISCSI
 	help
 	  Say 'y' here to have QEMU use iSCSI targets as block-devices.
 
+config BR2_PACKAGE_QEMU_USBREDIR
+	bool "Enable USB redirection"
+	depends on BR2_PACKAGE_USBREDIR
+	help
+	  Say 'y' here to have QEMU support USB redirection over the network.
+
+comment "USB redirection requires usbredir"
+	depends on !BR2_PACKAGE_USBREDIR
+
 config BR2_PACKAGE_QEMU_AIO
 	bool "Enable AIO"
 	depends on BR2_PACKAGE_LIBAIO
package/qemu/qemu.mk +7 -1
index 4436047..c14b3c3 100644
@@ -108,6 +108,13 @@ else
 QEMU_OPTS += --disable-libiscsi
 endif
 
+ifeq ($(BR2_PACKAGE_QEMU_USBREDIR),y)
+QEMU_OPTS += --enable-usb-redir
+QEMU_DEPENDENCIES += usbredir
+else
+QEMU_OPTS += --disable-usb-redir
+endif
+
 ifeq ($(BR2_PACKAGE_QEMU_AIO),y)
 QEMU_OPTS += --enable-linux-aio
 QEMU_DEPENDENCIES += libaio
@@ -251,7 +258,6 @@ define QEMU_CONFIGURE_CMDS
 	        --disable-docs                      \
 	        --disable-spice                     \
 	        --disable-rbd                       \
-	        --disable-usb-redir                 \
 	        --disable-guest-agent               \
 	        --disable-smartcard                 \
 	        --disable-strip                     \
Signature · 1 line
1.7.2.5
#60 lore raw

PATCH 32/36 package/qemu: add support for Spice

In reply to Yann E. MORIN
---
 package/qemu/Config.in |   12 ++++++++++++
 package/qemu/qemu.mk   |    8 +++++++-
 2 files changed, 19 insertions(+), 1 deletions(-)
package/qemu/Config.in +12 -0
index b56fef4..89b37af 100644
@@ -120,6 +120,18 @@ config BR2_PACKAGE_QEMU_CURSES
 	  frontend (although you can still use the SDL or VNC frontends to
 	  display the graphical output).
 
+config BR2_PACKAGE_QEMU_SPICE
+	bool "Enable Spice frontend"
+	depends on BR2_PACKAGE_SPICE
+	depends on !BR2_PREFER_STATIC_LIB
+	help
+	  Say 'y' here to have QEMU support Spice as a (VNC-like) frontend.
+
+if !BR2_PACKAGE_SPICE || BR2_PREFER_STATIC_LIB
+comment "Spice support requires spice-server,"
+comment "and does not work for static linking."
+endif
+
 comment "Block backends"
 
 config BR2_PACKAGE_QEMU_VIRTFS
package/qemu/qemu.mk +7 -1
index c14b3c3..a1d192e 100644
@@ -88,6 +88,13 @@ else
 QEMU_OPTS += --disable-curses
 endif
 
+ifeq ($(BR2_PACKAGE_QEMU_SPICE),y)
+QEMU_OPTS += --enable-spice
+QEMU_DEPENDENCIES += spice
+else
+QEMU_OPTS += --disable-spice
+endif
+
 ifeq ($(BR2_PACKAGE_QEMU_VIRTFS),y)
 QEMU_OPTS += --enable-virtfs
 else
@@ -256,7 +263,6 @@ define QEMU_CONFIGURE_CMDS
 	        --disable-brlapi                    \
 	        --disable-guest-base                \
 	        --disable-docs                      \
-	        --disable-spice                     \
 	        --disable-rbd                       \
 	        --disable-guest-agent               \
 	        --disable-smartcard                 \
Signature · 1 line
1.7.2.5
#61 lore raw

PATCH 33/36 package/qemu: option to build the docs

In reply to Yann E. MORIN
---
 package/qemu/qemu.mk |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)
package/qemu/qemu.mk +6 -1
index a1d192e..9e3e65f 100644
@@ -177,6 +177,12 @@ ifeq ($(BR2_PACKAGE_QEMU_BLOBS),)
 QEMU_OPTS += --disable-blobs
 endif
 
+ifeq ($(BR2_HAVE_DOCUMENTATION),y)
+QEMU_OPTS += --enable-docs
+else
+QEMU_OPTS += --disable-docs
+endif
+
 #----------------------------------------------------------------------------
 # Package hooks
 
@@ -262,7 +268,6 @@ define QEMU_CONFIGURE_CMDS
 	        --disable-vnc-sasl                  \
 	        --disable-brlapi                    \
 	        --disable-guest-base                \
-	        --disable-docs                      \
 	        --disable-rbd                       \
 	        --disable-guest-agent               \
 	        --disable-smartcard                 \
Signature · 1 line
1.7.2.5
#62 lore raw

PATCH 34/36 package/qemu: enable guest-base

In reply to Yann E. MORIN

Backport this patch to the initial QEMU patch if it works.

---
 package/qemu/qemu.mk |    1 -
 1 files changed, 0 insertions(+), 1 deletions(-)
package/qemu/qemu.mk +0 -1
index 9e3e65f..a6ae5e1 100644
@@ -267,7 +267,6 @@ define QEMU_CONFIGURE_CMDS
 	        --disable-slirp                     \
 	        --disable-vnc-sasl                  \
 	        --disable-brlapi                    \
-	        --disable-guest-base                \
 	        --disable-rbd                       \
 	        --disable-guest-agent               \
 	        --disable-smartcard                 \
Signature · 1 line
1.7.2.5
#63 lore raw

PATCH 35/36 package/qemu: move sub-options into a sub-menu

In reply to Yann E. MORIN

As there are now quite a few options to QEMU, move them into their own sub-menu, so it looks a bit less crowded in the 'misc' menu.

---
 package/qemu/Config.in |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
package/qemu/Config.in +1 -1
index 89b37af..e51b045 100644
@@ -1,4 +1,4 @@
-config BR2_PACKAGE_QEMU
+menuconfig BR2_PACKAGE_QEMU
 	bool "QEMU"
 	depends on BR2_PACKAGE_PYTHON       # We only need host-python,
 	                                    # but there's no way to say so.
Signature · 1 line
1.7.2.5
#64 lore raw

PATCH 36/36 package/qemu: enable a static build

In reply to Yann E. MORIN

---

It can be useful to have a statically-linked QEMU (especially the linux-user and bsd-user emulators) to avoid run-time issues with dynamically-loaded libraries.

There is an issue where QEMU could not be able to properly (re)map libraries in memory due to some overlap between its own memory mappings and the mappings of the user application being translated (it's a complex issue, so don't count on me to properly explain it, I did not understood it completely either... :-/ ).

---
 package/qemu/Config.in             |   20 ++++++++++++++------
 package/qemu/qemu-static-sdl.patch |   31 +++++++++++++++++++++++++++++++
 package/qemu/qemu.mk               |    4 ++++
 3 files changed, 49 insertions(+), 6 deletions(-)
 create mode 100644 package/qemu/qemu-static-sdl.patch
package/qemu/Config.in +14 -6
index e51b045..f4cb57a 100644
@@ -96,11 +96,11 @@ config BR2_PACKAGE_QEMU_VNC_JPEG
 config BR2_PACKAGE_QEMU_VNC_TLS
 	bool "TLS encryption"
 	depends on BR2_PACKAGE_QEMU_VNC
-	depends on !BR2_PREFER_STATIC_LIB
+	depends on !BR2_PACKAGE_QEMU_STATIC
 	select BR2_PACKAGE_GNUTLS
 
 comment "VNC TLS encryption does not work for static link"
-    depends on BR2_PACKAGE_QEMU_VNC && BR2_PREFER_STATIC_LIB
+    depends on BR2_PACKAGE_QEMU_VNC && BR2_PACKAGE_QEMU_STATIC
 
 config BR2_PACKAGE_QEMU_SDL
 	bool "Enable SDL frontend"
@@ -123,11 +123,11 @@ config BR2_PACKAGE_QEMU_CURSES
 config BR2_PACKAGE_QEMU_SPICE
 	bool "Enable Spice frontend"
 	depends on BR2_PACKAGE_SPICE
-	depends on !BR2_PREFER_STATIC_LIB
+	depends on !BR2_PACKAGE_QEMU_STATIC
 	help
 	  Say 'y' here to have QEMU support Spice as a (VNC-like) frontend.
 
-if !BR2_PACKAGE_SPICE || BR2_PREFER_STATIC_LIB
+if !BR2_PACKAGE_SPICE || BR2_PACKAGE_QEMU_STATIC
 comment "Spice support requires spice-server,"
 comment "and does not work for static linking."
 endif
@@ -150,13 +150,13 @@ config BR2_PACKAGE_QEMU_VIRTFS
 
 config BR2_PACKAGE_QEMU_CURL
 	bool "Enable remote block-devices using cURL"
-	depends on !BR2_PREFER_STATIC_LIB
+	depends on !BR2_PACKAGE_QEMU_STATIC
 	select BR2_PACKAGE_LIBCURL
 	help
 	  Say 'y' to access remote block-devices using libcurl.
 
 comment "cURL support is not possible with static linking"
-    depends on BR2_PREFER_STATIC_LIB
+    depends on BR2_PACKAGE_QEMU_STATIC
 
 config BR2_PACKAGE_QEMU_ISCSI
 	bool "Enable remote block-devices using iSCSI"
@@ -255,6 +255,14 @@ config BR2_PACKAGE_QEMU_KEYMAPS
 	    - 'de fr* en-*' for german, french and english keymaps
 	    - and so on (see the QEMU source for all supported keymaps)
 
+config BR2_PREFER_STATIC_LIB
+    select BR2_PACKAGE_QEMU_STATIC
+
+config BR2_PACKAGE_QEMU_STATIC
+	bool "Build statically"
+	help
+	  Build static qemu executable(s).
+
 endif # BR2_PACKAGE_QEMU
 
 comment "QEMU requires python"
package/qemu/qemu-static-sdl.patch new file +31 -0
new file mode 100644
index 0000000..3dc9dbe
@@ -0,0 +1,31 @@
+configure: fix detection for SDL libs when static linking
+
+If using pkg-config, we must use '--static --libs', not '--stati-libs'
+which is solely for sdl-config.
+
+Signed-off-by: "Yann E. MORIN" <[email protected]>
+
+diff -durN qemu-1.1.1.orig//configure qemu-1.1.1/configure
+--- qemu-1.1.1.orig//configure	2012-07-17 20:11:14.000000000 +0200
++++ qemu-1.1.1/configure	2012-07-30 16:40:21.248942557 +0200
+@@ -1546,9 +1546,11 @@
+ 
+ if $pkg_config sdl --modversion >/dev/null 2>&1; then
+   sdlconfig="$pkg_config sdl"
++  sdlconfig_staticlibs="--static --libs"
+   _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
+ elif has ${sdl_config}; then
+   sdlconfig="$sdl_config"
++  sdlconfig_staticlibs="--static-libs"
+   _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
+ else
+   if test "$sdl" = "yes" ; then
+@@ -1569,7 +1571,7 @@
+ EOF
+   sdl_cflags=`$sdlconfig --cflags 2> /dev/null`
+   if test "$static" = "yes" ; then
+-    sdl_libs=`$sdlconfig --static-libs 2>/dev/null`
++    sdl_libs=`$sdlconfig $sdlconfig_staticlibs 2>/dev/null`
+   else
+     sdl_libs=`$sdlconfig --libs 2> /dev/null`
+   fi
package/qemu/qemu.mk +4 -0
index a6ae5e1..d5f32f4 100644
@@ -25,6 +25,10 @@ QEMU_LIBS = -lrt -lm
 QEMU_OPTS =
 QEMU_VARS =
 
+ifeq ($(BR2_PACKAGE_QEMU_STATIC),y)
+QEMU_OPTS += --static
+endif
+
 ifeq ($(BR2_PACKAGE_QEMU_SYSTEM),y)
 QEMU_OPTS += --enable-system
 else
Signature · 1 line
1.7.2.5