Skip to contentSkip to conversation

wine: New package

PATCH New André Hentschel 3 participants 5 messages Jan 20, 2015 – Jan 22, 2015

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 wine: New package

Adds new package: wine

Wine is a compatibility layer capable of running Windows applications on Linux.

---
I hope i addressed all the comments in the correct manner
try 2: Fix issue spotted by baruch
try 3: Added comments, added hash file, fixed X11 check, depend on internal toolchain, added bison and flex to host dependencies try 4: instead of depending on internal toolchains add the expected tuple via --host

 package/Config.in      |   1 +
 package/wine/Config.in |  21 ++++
 package/wine/wine.hash |   2 +
 package/wine/wine.mk   | 270 +++++++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 294 insertions(+)
package/Config.in +1 -0
index 266de13..fd262ad 100644
@@ -1013,6 +1013,7 @@ menu "Miscellaneous"
 	source "package/snowball-init/Config.in"
 	source "package/sound-theme-borealis/Config.in"
 	source "package/sound-theme-freedesktop/Config.in"
+	source "package/wine/Config.in"
 endmenu
 
 menu "Networking applications"
package/wine/Config.in new file +21 -0
new file mode 100644
index 0000000..e8e2091
@@ -0,0 +1,21 @@
+config BR2_PACKAGE_WINE
+	bool "wine"
+	depends on BR2_INET_IPV6
+	depends on BR2_TOOLCHAIN_HAS_THREADS
+	depends on BR2_TOOLCHAIN_USES_GLIBC
+	# Wine has much CPU specific code
+	depends on BR2_i386 || BR2_x86_64
+	help
+	  Wine is a compatibility layer capable of running
+	  Windows applications on Linux. Instead of simulating internal
+	  Windows logic like a virtual machine or emulator,
+	  Wine translates Windows API calls into POSIX calls on-the-fly,
+	  eliminating the performance and memory penalties of other methods.
+
+	  http://www.winehq.org
+
+comment "wine needs a (e)glibc toolchain w/ IPv6, threads"
+	depends on BR2_i386 || BR2_x86_64
+	depends on BR2_TOOLCHAIN_BUILDROOT
+	depends on !BR2_INET_IPV6 || !BR2_TOOLCHAIN_HAS_THREADS
+	depends on !BR2_TOOLCHAIN_USES_GLIBC
package/wine/wine.hash new file +2 -0
new file mode 100644
index 0000000..7ffc45e
@@ -0,0 +1,2 @@
+# Locally computed
+sha256 0f46dd29b278a3352206b49680f0ac3bfa107e65cb40cb4af51c137f0ebeb271 wine-1.6.2.tar.bz2
package/wine/wine.mk new file +270 -0

270 lines not on this page · raw message

#1 lore raw

PATCH 1/1 wine: New package

Hi Andr?,

Le 20/01/2015 23:09, Andr? Hentschel a ?crit :

Quoted 17 lines

Adds new package: wine

Wine is a compatibility layer capable of running Windows applications on Linux.

---
I hope i addressed all the comments in the correct manner
try 2: Fix issue spotted by baruch
try 3: Added comments, added hash file, fixed X11 check, depend on internal toolchain, added bison and flex to host dependencies try 4: instead of depending on internal toolchains add the expected tuple via --host

 package/Config.in      |   1 +
 package/wine/Config.in |  21 ++++
 package/wine/wine.hash |   2 +
 package/wine/wine.mk   | 270 +++++++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 294 insertions(+)

[...]

package/wine/wine.mk line 58

Quoted 11 lines
package/wine/wine.mk new file +11 -0
+
+# To support freetype in wine we also need freetype in host-wine for the cross compiling tools
+ifeq ($(BR2_PACKAGE_FREETYPE),y)
+	WINE_CONF_OPTS += --with-freetype
+	HOST_WINE_CONF_OPTS += --with-freetype
+	WINE_DEPENDENCIES += freetype
+	HOST_WINE_DEPENDENCIES += host-freetype
+else
+	WINE_CONF_OPTS += --without-freetype
+	HOST_WINE_CONF_OPTS += --without-freetype
+endif

I'm building your wine package on my 64bits host and the build fail because freetype library in HOST_DIR is build for it, but wine is build for 32bits host.

see my config.log output:
configure:10886: checking for -lfreetype
configure:10911: /usr/bin/gcc -m32 -o conftest -O2 -I/home/naourr/git/buildroot/test/wine/host/usr/include -I/home/naourr/git/buildroot/test/wine/host/usr/include -I/home/naourr/git/buildroot/test/wine/host/usr/include/freetype2 -L/home/naourr/git/buildroot/test/wine/host/lib -L/home/naourr/git/buildroot/test/wine/host/usr/lib -Wl,-rpath,/home/naourr/git/buildroot/test/wine/host/usr/lib conftest.c -lfreetype -L/home/naourr/git/buildroot/test/wine/host/usr/lib -lfreetype >&5
/usr/bin/ld: skipping incompatible /home/naourr/git/buildroot/test/wine/host/usr/lib/libfreetype.so when searching for -lfreetype /usr/bin/ld: skipping incompatible /home/naourr/git/buildroot/test/wine/host/usr/lib/libfreetype.so when searching for -lfreetype /usr/bin/ld: skipping incompatible /usr/lib64/libfreetype.so when searching for -lfreetype
/usr/bin/ld: cannot find -lfreetype
/usr/bin/ld: skipping incompatible /home/naourr/git/buildroot/test/wine/host/usr/lib/libfreetype.so when searching for -lfreetype /usr/bin/ld: skipping incompatible /home/naourr/git/buildroot/test/wine/host/usr/lib/libfreetype.so when searching for -lfreetype /usr/bin/ld: skipping incompatible /usr/lib64/libfreetype.so when searching for -lfreetype
/usr/bin/ld: cannot find -lfreetype
collect2: error: ld returned 1 exit status

It seems that --enable-win64 must be added to HOST_WINE_CONF_OPTS for 64bits host.

Best regards,
Romain Naour

[...]

#2 lore raw

PATCH 1/1 wine: New package

Am 22.01.2015 um 00:07 schrieb Romain Naour:

Quoted 17 lines

I'm building your wine package on my 64bits host and the build fail because freetype library in HOST_DIR is build for it, but wine is build for 32bits host.

see my config.log output:
configure:10886: checking for -lfreetype
configure:10911: /usr/bin/gcc -m32 -o conftest -O2 -I/home/naourr/git/buildroot/test/wine/host/usr/include -I/home/naourr/git/buildroot/test/wine/host/usr/include -I/home/naourr/git/buildroot/test/wine/host/usr/include/freetype2 -L/home/naourr/git/buildroot/test/wine/host/lib -L/home/naourr/git/buildroot/test/wine/host/usr/lib -Wl,-rpath,/home/naourr/git/buildroot/test/wine/host/usr/lib conftest.c -lfreetype -L/home/naourr/git/buildroot/test/wine/host/usr/lib -lfreetype >&5
/usr/bin/ld: skipping incompatible /home/naourr/git/buildroot/test/wine/host/usr/lib/libfreetype.so when searching for -lfreetype /usr/bin/ld: skipping incompatible /home/naourr/git/buildroot/test/wine/host/usr/lib/libfreetype.so when searching for -lfreetype /usr/bin/ld: skipping incompatible /usr/lib64/libfreetype.so when searching for -lfreetype
/usr/bin/ld: cannot find -lfreetype
/usr/bin/ld: skipping incompatible /home/naourr/git/buildroot/test/wine/host/usr/lib/libfreetype.so when searching for -lfreetype /usr/bin/ld: skipping incompatible /home/naourr/git/buildroot/test/wine/host/usr/lib/libfreetype.so when searching for -lfreetype /usr/bin/ld: skipping incompatible /usr/lib64/libfreetype.so when searching for -lfreetype
/usr/bin/ld: cannot find -lfreetype
collect2: error: ld returned 1 exit status

Quoted 2 lines

It seems that --enable-win64 must be added to HOST_WINE_CONF_OPTS for 64bits host.

Wow, good catch, thanks!
Guess it didn't failed on my machine because i also have 32-bit freetype installed on the host.

#3 lore raw

PATCH 1/1 wine: New package

In reply to André Hentschel

Andr?, All,

On 2015-01-20 23:09 +0100, Andr? Hentschel spake thusly:

Quoted 1 line

Adds new package: wine

Sorry for jumoing late in the wagon, but here are some minor comments...

[--SNIP--]

Quoted 15 lines
package/wine/Config.in new file +9 -0
new file mode 100644
index 0000000..e8e2091
@@ -0,0 +1,21 @@
+config BR2_PACKAGE_WINE
+	bool "wine"
+	depends on BR2_INET_IPV6
+	depends on BR2_TOOLCHAIN_HAS_THREADS
+	depends on BR2_TOOLCHAIN_USES_GLIBC
+	# Wine has much CPU specific code
+	depends on BR2_i386 || BR2_x86_64
+	help
+	  Wine is a compatibility layer capable of running

package/wine/Config.in line 19

Quoted 10 lines
package/wine/Config.in new file +10 -0
+	  Windows applications on Linux. Instead of simulating internal
+	  Windows logic like a virtual machine or emulator,
+	  Wine translates Windows API calls into POSIX calls on-the-fly,
+	  eliminating the performance and memory penalties of other methods.
+
+	  http://www.winehq.org
+
+comment "wine needs a (e)glibc toolchain w/ IPv6, threads"
+	depends on BR2_i386 || BR2_x86_64
+	depends on BR2_TOOLCHAIN_BUILDROOT

Did you forget to remove that dependency for the comment?

Quoted 32 lines
package/wine/Config.in new file +2 -0
+	depends on !BR2_INET_IPV6 || !BR2_TOOLCHAIN_HAS_THREADS
+	depends on !BR2_TOOLCHAIN_USES_GLIBC
package/wine/wine.hash new file +2 -0
new file mode 100644
index 0000000..7ffc45e
@@ -0,0 +1,2 @@
+# Locally computed
+sha256 0f46dd29b278a3352206b49680f0ac3bfa107e65cb40cb4af51c137f0ebeb271 wine-1.6.2.tar.bz2
package/wine/wine.mk new file +16 -0
new file mode 100644
index 0000000..96afcb6
@@ -0,0 +1,270 @@
+################################################################################
+#
+# wine
+#
+################################################################################
+
+WINE_VERSION = 1.6.2
+WINE_SOURCE = wine-$(WINE_VERSION).tar.bz2
+WINE_SITE = http://source.winehq.org/git/wine.git/snapshot/
+WINE_LICENSE = LGPLv2.1+
+WINE_LICENSE_FILES = COPYING.LIB
+WINE_INSTALL_TARGET = YES
+WINE_DEPENDENCIES = host-wine
+HOST_WINE_DEPENDENCIES = host-bison host-flex
+
+# Wine needs its own directory structure and tools for cross compiling

package/wine/wine.mk line 26

Quoted 10 lines
package/wine/wine.mk new file +10 -0
+WINE_CONF_OPTS = \
+	--with-wine-tools=../host-wine-$(WINE_VERSION) \
+	--disable-tests \
+	--without-opengl \
+	$(if $(BR2_ARCH_IS_64),--enable-win64)
+
+# Wine needs the host tupel of the external toolchain for cross compiling
+ifeq ($(BR2_TOOLCHAIN_BUILDROOT),)
+	WINE_CONF_OPTS += --host=$(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_PREFIX))
+endif

I know this has already been discussed at length on the list, but it really warrants a bit more explanations here.

package/wine/wine.mk line 33

Quoted 6 lines
package/wine/wine.mk new file +6 -0
+ifeq ($(BR2_PACKAGE_CUPS),y)
+	WINE_CONF_OPTS += --with-cups
+	WINE_DEPENDENCIES += cups
+else
+	WINE_CONF_OPTS += --without-cups
+endif

I do appreciate that you did all that work to enable/disable optional features. That's a great work! :-)

However, for very complex packages, my opinion is that it is much simpler to review and test (and write!) a new complex package with everything disabled. It makes for smaller patches to review, and faster builds to test. Then, new features can be added one by one in subsequent patches, once the core has been upstreamed.

Note that I do not ask you to remove that, jsut keep it. Just suggesting that in case you're fool^Wbold enough to try packaging some other big stuff in the future! Hehe! ;-)

[--SNIP--]

package/wine/wine.mk line 223

Quoted 3 lines
package/wine/wine.mk new file +3 -0
+HOST_WINE_CONF_OPTS += \
+	--disable-tests \
+	--disable-win16 \

[--SNIP--]

package/wine/wine.mk line 267

Quoted 2 lines
package/wine/wine.mk new file +2 -0
+	--without-xxf86vm \
+	--without-zlib

Like you disabled everthing here.

package/wine/wine.mk line 270

Quoted 2 lines
package/wine/wine.mk new file +2 -0
+$(eval $(autotools-package))
+$(eval $(host-autotools-package))

I haven't much more to say, I'll try to have some time this WE to have a further look.

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.  |
'------------------------------^-------^------------------^--------------------'
#4 lore raw

PATCH 1/1 wine: New package

Am 22.01.2015 um 00:35 schrieb Yann E. MORIN:

Quoted 6 lines

Andr?, All,

On 2015-01-20 23:09 +0100, Andr? Hentschel spake thusly:

Quoted 1 line

Adds new package: wine

Sorry for jumoing late in the wagon, but here are some minor comments...

Hi Yann,

Thx for the review!

Quoted 5 lines

package/wine/Config.in line 19

Quoted 3 lines
package/wine/Config.in new file +3 -0
+comment "wine needs a (e)glibc toolchain w/ IPv6, threads"
+	depends on BR2_i386 || BR2_x86_64
+	depends on BR2_TOOLCHAIN_BUILDROOT

Did you forget to remove that dependency for the comment?

yes, thx

Quoted 7 lines

package/wine/wine.mk line 26

Quoted 4 lines
package/wine/wine.mk new file +4 -0
+# Wine needs the host tupel of the external toolchain for cross compiling
+ifeq ($(BR2_TOOLCHAIN_BUILDROOT),)
+	WINE_CONF_OPTS += --host=$(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_PREFIX))
+endif

I know this has already been discussed at length on the list, but it really warrants a bit more explanations here.

sure, done

Quoted 16 lines

package/wine/wine.mk line 33

Quoted 6 lines
package/wine/wine.mk new file +6 -0
+ifeq ($(BR2_PACKAGE_CUPS),y)
+	WINE_CONF_OPTS += --with-cups
+	WINE_DEPENDENCIES += cups
+else
+	WINE_CONF_OPTS += --without-cups
+endif

I do appreciate that you did all that work to enable/disable optional features. That's a great work! :-)

However, for very complex packages, my opinion is that it is much simpler to review and test (and write!) a new complex package with everything disabled. It makes for smaller patches to review, and faster builds to test. Then, new features can be added one by one in subsequent patches, once the core has been upstreamed.

Quoted 3 lines

Note that I do not ask you to remove that, jsut keep it. Just suggesting that in case you're fool^Wbold enough to try packaging some other big stuff in the future! Hehe! ;-)

:D
honestly i'd have a project in mind...

Quoted 9 lines

[--SNIP--]

package/wine/wine.mk line 223

Quoted 3 lines
package/wine/wine.mk new file +3 -0
+HOST_WINE_CONF_OPTS += \
+	--disable-tests \
+	--disable-win16 \

[--SNIP--]

package/wine/wine.mk line 267

Quoted 2 lines
package/wine/wine.mk new file +2 -0
+	--without-xxf86vm \
+	--without-zlib

Like you disabled everthing here.

added a comment for this now, too. as it has its reason.

Quoted 5 lines
Quoted 2 lines

+$(eval $(autotools-package))
+$(eval $(host-autotools-package))

I haven't much more to say, I'll try to have some time this WE to have a further look.

cool, i'll send try 5 as soon as i tested it