[pkg-wine-party] [PATCH 4/8] Add wine-loader{32,64} packages; provide hints in fake wine-loader-32

Hilko Bengen bengen at debian.org
Sun Jul 1 17:16:32 UTC 2012


---
 debian/control.in                      |   49 ++++++++++++++++++++++++++++++--
 debian/libwine.install-platform        |    6 ----
 debian/rules                           |   32 +++++++++++++++++----
 debian/wine-bin.install-alternatives   |    5 ----
 debian/wine-dummy                      |   42 +++++++++++++++++++++++++++
 debian/wine-loader-32.install-platform |    9 ++++++
 debian/wine-loader-64.install-platform |    5 ++++
 7 files changed, 129 insertions(+), 19 deletions(-)
 delete mode 100644 debian/libwine.install-platform
 create mode 100755 debian/wine-dummy
 create mode 100644 debian/wine-loader-32.install-common
 create mode 100644 debian/wine-loader-32.install-platform
 create mode 100644 debian/wine-loader-64.install-common
 create mode 100644 debian/wine-loader-64.install-platform

diff --git a/debian/control.in b/debian/control.in
index e8b3383..a46be45 100644
--- a/debian/control.in
+++ b/debian/control.in
@@ -53,7 +53,7 @@ Depends:
  ${shlibs:Depends},
  libwine-bin (= ${binary:Version}),
  x11-utils | xbase-clients (>= 4.0) | xcontrib,
- libwine-gecko-1.4
+ libwine-gecko-1.4,
 Suggests:
  libwine-print,
  libwine-gl
@@ -132,6 +132,11 @@ Depends:
  ${misc:Depends},
  ${wine:Depends},
  ${shlibs:Depends},
+ libwine-server:any (= ${binary:Version}) [any-i386],
+ libwine-server (= ${binary:Version}) [any-amd64 any-powerpc any-sparc],
+ wine-loader-64 (= ${binary:Version}) [any-amd64],
+ wine-loader-32:any (= ${binary:Version}) [any-amd64],
+ wine-loader-32 (= ${binary:Version}) [any-i386 any-powerpc any-sparc],
 Recommends:
  ${shlibs:Recommends},
  ttf-liberation,
@@ -152,16 +157,56 @@ Replaces:
  wine (<< 0.9.11-1),
  libwine-twain (<< 0.9.13),
  libwine-gl (<< 0.9.53-1),
+ wine-bin (<< 1.4.1-1.1) [any-i386 any-powerpc any-sparc],
+Breaks:
+ wine-bin (<< 1.4.1-1.1) [any-i386 any-powerpc any-sparc],
 Description: Windows API implementation - library
  Wine is a free MS-Windows API implementation.
  This is still a work in progress and many applications may still not work.
  .
  This package provides the library that implements the Windows API.
 
+Package: wine-loader-32
+Section: libs
+Architecture: any-i386 any-amd64 any-powerpc any-sparc
+Multi-Arch: allowed
+Depends:
+ ${misc:Depends},
+ ${shlibs:Depends},
+Pre-Depends:
+ ${misc:Pre-Depends},
+ ${wine:Pre-Depends},
+Breaks: wine-bin (<< 1.4.1-1.1),
+ wine64-bin (<< 1.4.1-1.2),
+Replaces: wine-bin (<< 1.4.1-1.1),
+ wine64-bin (<< 1.4.1-1.2),
+Description: Windows API implementation - ${wine:loader32short}
+ Wine is a free MS-Windows API implementation.
+ This is still a work in progress and many applications may still not work.
+ ${wine:loader32long}
+
+Package: wine-loader-64
+Section: libs
+Architecture: any-amd64
+Depends:
+ ${misc:Depends},
+ ${shlibs:Depends},
+Pre-Depends:
+ ${misc:Pre-Depends},
+ ${wine:Pre-Depends},
+Replaces: wine-bin (<< 1.4.1-1.1)
+Breaks: wine-bin (<< 1.4.1-1.1)
+Description: Windows API implementation - wine64 program loader
+ Wine is a free MS-Windows API implementation.
+ This is still a work in progress and many applications may still not work.
+ .
+ This package provides the tool that is used to load and run Win64
+ executables.
+
 Package: libwine-server
 Section: libs
 Architecture: any-i386 any-amd64 any-powerpc any-sparc
-Multi-Arch: foreign
+Multi-Arch: allowed
 Depends:
  ${misc:Depends},
  ${shlibs:Depends},
diff --git a/debian/libwine.install-platform b/debian/libwine.install-platform
deleted file mode 100644
index a201d22..0000000
--- a/debian/libwine.install-platform
+++ /dev/null
@@ -1,6 +0,0 @@
-debian/tmp/usr/lib/wine/wine-kthread
-debian/tmp/usr/lib/wine/wine-pthread
-debian/tmp/usr/lib/wine/wine-preloader
-
-debian/tmp/usr/bin/wine
-debian/tmp/usr/bin/wine64
diff --git a/debian/rules b/debian/rules
index 98369d9..3c795a0 100755
--- a/debian/rules
+++ b/debian/rules
@@ -243,10 +243,6 @@ install-arch32-stamp: build-arch32-stamp
 
 	# install wine, libwine, fonts, and tools
 	$(MAKE) -C build32 install $(IA32_OVERRIDES) DESTDIR=$(CURDIR)/debian/tmp
-	for ldr in $(LOADERS); do \
-	 [ ! -f debian/tmp/usr/bin/$$ldr ] || \
-	 mv debian/tmp/usr/bin/$$ldr debian/tmp/$(IA32_WINEDIR); \
-	done
 	# install manpages
 	$(MAKE) -C build32/documentation install-man DESTDIR=$(CURDIR)/debian/tmp
 	mv debian/tmp/usr/share/man/man3w debian/tmp/usr/share/man/man3
@@ -273,6 +269,10 @@ install-arch64-stamp: build-arch64-stamp $(patsubst build%,install-arch%-stamp,$
 	install build64/tools/fnt2bdf debian/tmp/usr/bin
 	rm -f debian/tmp/usr/bin/winelauncher
 	sed "s,usr/lib/wine,$(AMD64_WINEDIR)," debian/winelauncher > debian/tmp/usr/bin/wine-launcher
+
+	# install warning script
+	install -D -m755 debian/wine-dummy debian/tmp/usr/bin/wine
+
 	# install tools
 	cp tools/font_convert.sh debian/tmp/usr/bin/wine-font-convert
 
@@ -349,8 +349,8 @@ binary-arch: install-arch-stamp control-stamp
 	# so objcopy barfs on several Wine binaries.
 	# I'll just have to exclude them here, I guess.
 	# (They're pretty small ones anyway...)
-	dh_strip -s --dbg-package=libwine-dbg$(VERSUFFIX) \
-	 -Xwine-kthread -Xwine-pthread -Xwine-preloader -Xwine.bin
+	# dh_strip -s --dbg-package=libwine-dbg$(VERSUFFIX) \
+	#  -Xwine-kthread -Xwine-pthread -Xwine-preloader -Xwine.bin
 
 	# We don't need symbols for the build tools...
 	rm -rf debian/libwine-dbg$(VERSUFFIX)/usr/lib/debug/usr/bin
@@ -380,6 +380,26 @@ binary-arch: install-arch-stamp control-stamp
 	bash debian/recs.sh "$(VERSUFFIX)"
 	bash debian/cleandeps.sh "$(VERSUFFIX)"
 
+ifneq ($(DEB_HOST_GNU_CPU),x86_64)
+	echo 'wine:loader32short=wine program loader (32-bit)' \
+		>> debian/wine-loader-32.substvars
+	echo "wine:loader32long=\
+\$${Newline}.\$${Newline}\
+This package provides the tool that is used to load and run Win32\$${Newline}\
+executables." >> debian/wine-loader-32.substvars
+else
+	echo 'wine:loader32short=placeholder for wine program loader (32-bit)' \
+		>> debian/wine-loader-32.substvars
+	echo "wine:loader32long=\
+\$${Newline}.\$${Newline}\
+This package provides a script that gives instructions for installing\$${Newline}\
+the 32-bit Wine components on a 64-bit system.\
+\$${Newline}.\$${Newline}\
+This is a workaround because explicit cross-architecture package\$${Newline}\
+dependencies are not yet allowed in Debian."\
+		>> debian/wine-loader-32.substvars
+endif
+
 	# relaxed libwine dependencies for everyone else
 	dh_makeshlibs -s
 
diff --git a/debian/wine-bin.install-alternatives b/debian/wine-bin.install-alternatives
index d790def..5587c7c 100644
--- a/debian/wine-bin.install-alternatives
+++ b/debian/wine-bin.install-alternatives
@@ -3,7 +3,6 @@ debian/tmp/usr/bin/msiexec
 debian/tmp/usr/bin/notepad
 debian/tmp/usr/bin/regedit
 debian/tmp/usr/bin/regsvr32
-debian/tmp/usr/bin/wine
 debian/tmp/usr/bin/wine-font-convert
 debian/tmp/usr/bin/wineboot
 debian/tmp/usr/bin/winecfg
@@ -12,8 +11,4 @@ debian/tmp/usr/bin/wineconsole
 debian/tmp/usr/bin/winefile
 debian/tmp/usr/bin/winemine 
 debian/tmp/usr/bin/winepath
-debian/tmp/usr/share/man/man1/wine.1
 debian/tmp/usr/share/man/man1/winedbg.1
-debian/tmp/usr/share/man/fr.UTF-8/man1/wine.1
-debian/tmp/usr/share/man/de.UTF-8/man1/wine.1
-debian/tmp/usr/share/man/pl.UTF-8/man1/wine.1
diff --git a/debian/wine-dummy b/debian/wine-dummy
new file mode 100755
index 0000000..9812221
--- /dev/null
+++ b/debian/wine-dummy
@@ -0,0 +1,42 @@
+#!/bin/bash
+
+XMESSAGE=/usr/bin/xmessage
+ARCH="`dpkg --print-architecture`"
+ARCH_I386="`echo $ARCH | sed s,amd64,i386,`"
+
+TITLE="Debian / Wine: Cannot run Win32 applications"
+I386_MSG=\
+"Only the 64-bit Wine components have been installed on your Debian
+system, the 32-bit components are missing.
+
+To be able to run Win32 applications with Wine, please take the
+following steps (as root or via sudo):
+
+1. Enable multiarch; configure ${ARCH_I386} as a secondary architecture:
+   # dpkg --add-architecture ${ARCH_I386}
+   # apt-get update
+2. install the 32-bit libwine-bin package:
+   # apt-get install libwine-bin:${ARCH_I386}
+
+In the process, the package wine-loader-32 that contains this script
+will be replaced by a package from ${ARCH_I386} witht the same name
+that contains the real loader.
+
+For more information on the multiarch conversion, please see:
+http://wiki.debian.org/Multiarch/HOWTO"
+
+$XMESSAGE -center \
+    -title "$TITLE" \
+    "$I386_MSG" 2>/dev/null
+notify=$?
+if [ $notify -eq 1 ] ; then
+    # xmessage was unable to notify the user, try tty instead
+    echo "$TITLE"
+    echo "" >&2
+    echo "$I386_MSG" >&2
+    echo "" >&2
+    echo -n "(okay) " >&2
+    read confirm
+fi
+
+exit 1
diff --git a/debian/wine-loader-32.install-common b/debian/wine-loader-32.install-common
new file mode 100644
index 0000000..e69de29
diff --git a/debian/wine-loader-32.install-platform b/debian/wine-loader-32.install-platform
new file mode 100644
index 0000000..7a75c6d
--- /dev/null
+++ b/debian/wine-loader-32.install-platform
@@ -0,0 +1,9 @@
+debian/tmp/usr/bin/wine-kthread
+debian/tmp/usr/bin/wine-pthread
+debian/tmp/usr/bin/wine-preloader
+
+debian/tmp/usr/bin/wine
+debian/tmp/usr/share/man/man1/wine.1
+debian/tmp/usr/share/man/fr.UTF-8/man1/wine.1
+debian/tmp/usr/share/man/de.UTF-8/man1/wine.1
+debian/tmp/usr/share/man/pl.UTF-8/man1/wine.1
diff --git a/debian/wine-loader-64.install-common b/debian/wine-loader-64.install-common
new file mode 100644
index 0000000..e69de29
diff --git a/debian/wine-loader-64.install-platform b/debian/wine-loader-64.install-platform
new file mode 100644
index 0000000..4a917dc
--- /dev/null
+++ b/debian/wine-loader-64.install-platform
@@ -0,0 +1,5 @@
+debian/tmp/usr/bin/wine64-kthread
+debian/tmp/usr/bin/wine64-pthread
+debian/tmp/usr/bin/wine64-preloader
+
+debian/tmp/usr/bin/wine64
-- 
1.7.10




More information about the pkg-wine-party mailing list