From 917af2acb154af8f393ed4de2980e779ae5f1198 Mon Sep 17 00:00:00 2001 From: "survolog (Andrey Grigorev)" Date: Mon, 15 Apr 2019 21:04:21 +0300 Subject: [PATCH] Update to 4.6 --- .abf.yml | 8 +- README.install.urpmi.i586.staging | 5 + README.install.urpmi.x86_64.staging | 11 + ...ne-staging-4.5-mock-urpm-broken-pipe.patch | 12 +- wine.spec | 235 +++++++++++------- 5 files changed, 170 insertions(+), 101 deletions(-) create mode 100644 README.install.urpmi.i586.staging create mode 100644 README.install.urpmi.x86_64.staging rename wine-staging-4.4-mock-urpm-broken-pipe.patch => wine-staging-4.5-mock-urpm-broken-pipe.patch (82%) diff --git a/.abf.yml b/.abf.yml index f1486ae..af00b8a 100644 --- a/.abf.yml +++ b/.abf.yml @@ -1,8 +1,8 @@ sources: - wine-4.4.tar.xz: c08501490e7f819aa4704ad8c3f820997fe64391 - wine-4.4.tar.xz.sign: 211919177cd80576b7dbfdbb0a7e9a1f66c3f9d2 - wine-staging-4.4.tar.gz: b95d1bb8a66299428549bfc1aa38a6fe354752af - wine-nine-standalone-0.3.tar.gz: bf2225f974b3430e779683fafa33239b889ce2c3 + wine-4.6.tar.xz: f14ac09fa86feebabfd9f0f3ac021f2c5447314a + wine-4.6.tar.xz.sign: 0291f4fd175597d6164f7cdff7c61fda9184ebe4 + wine-staging-4.6.tar.gz: 17092d5ce78916928cb4bd7f3ddface8f6fc6664 + wine-nine-standalone-0.4.tar.gz: 68f0dac73205650f839189c676183e5c4dff7cf5 winetricks-20190310.tar.gz: e48303a7c3153dc679228595ae400a8954445fa4 icons-4.0.tar.xz: 3063b6fcf8d9aeedcb9ecaab9c522bed88a21c0a rosa-wine-desktop-4.4.1.tar.xz: 299d6a589af1e4db705f0e09190a8b388bb74b95 diff --git a/README.install.urpmi.i586.staging b/README.install.urpmi.i586.staging new file mode 100644 index 0000000..3e4f95e --- /dev/null +++ b/README.install.urpmi.i586.staging @@ -0,0 +1,5 @@ +It is Wine with Staging patches for running Win32 applications. + +=== Russian === + +Это Wine с патчами Staging для запуска Win32 приложений. diff --git a/README.install.urpmi.x86_64.staging b/README.install.urpmi.x86_64.staging new file mode 100644 index 0000000..333f077 --- /dev/null +++ b/README.install.urpmi.x86_64.staging @@ -0,0 +1,11 @@ +This is Wine with Staging patches for running Win64 applications. +This version can only be used to run 64-bit Windows applications as is. +For running 32-bit Windows applications, you need to also install +the 'wine32' package from the 32-bit repository. + +=== Russian === + +Это Wine с патчами Staging для запуска Win64 приложений. +Эта версия может запускать только 64-bit Windows приложения. +Для запуска 32-bit Windows приложений Вам требуется +установить также и пакет 'wine32' из 32-bit репозитория. diff --git a/wine-staging-4.4-mock-urpm-broken-pipe.patch b/wine-staging-4.5-mock-urpm-broken-pipe.patch similarity index 82% rename from wine-staging-4.4-mock-urpm-broken-pipe.patch rename to wine-staging-4.5-mock-urpm-broken-pipe.patch index d8e6335..07892e4 100644 --- a/wine-staging-4.4-mock-urpm-broken-pipe.patch +++ b/wine-staging-4.5-mock-urpm-broken-pipe.patch @@ -1,6 +1,6 @@ -diff -ur wine-staging-4.4/patches/gitapply.sh wine-staging-4.4_patched/patches/gitapply.sh ---- wine-staging-4.4/patches/gitapply.sh 2019-03-17 09:12:16.000000000 +0300 -+++ wine-staging-4.4_patched/patches/gitapply.sh 2019-03-24 18:21:37.417987367 +0300 +diff -ur wine-staging-4.5/patches/gitapply.sh wine-staging-4.5_patched/patches/gitapply.sh +--- wine-staging-4.5/patches/gitapply.sh 2019-03-30 08:02:54.000000000 +0300 ++++ wine-staging-4.5_patched/patches/gitapply.sh 2019-03-31 14:34:17.458722634 +0300 @@ -309,6 +309,7 @@ patch_binary_size="" @@ -19,12 +19,10 @@ diff -ur wine-staging-4.4/patches/gitapply.sh wine-staging-4.4_patched/patches/g # Remove first path components, which are always a/ and b/ for git patches if [[ "$patch_oldname" =~ ^a/(.*)$ ]]; then -@@ -425,7 +427,8 @@ - +@@ -426,6 +428,7 @@ patch_binary_complete=0 patch_binary_destsize=0 -- -+ + + hexdump -v -e '32/1 "%02X" "\n"' "$delta_tmpfile" | gawk "$awk_decode_binarypatch" > patch_export.txt while read cmd arg1 arg2; do if [ "$cmd" == "S" ]; then diff --git a/wine.spec b/wine.spec index 2c09406..844ac82 100644 --- a/wine.spec +++ b/wine.spec @@ -5,22 +5,27 @@ # Switch between systemd-binfmt and sysvinit support %define with_systemd 1 -%define winetricks_ver 20190310 -%define winenine_ver 0.3 +%define winetricks_ver 20190310 +%define winenine_ver 0.4 Summary: WINE Is Not An Emulator - runs MS Windows programs Name: wine -Version: 4.4 -Release: 3 +Version: 4.6 +Release: 1 Epoch: 2 License: LGPLv2+ Group: Emulators Url: http://www.winehq.com/ Source0: http://mirrors.ibiblio.org/wine/source/%(echo %{version} |cut -d. -f1-2)/%{name}-%{version}.tar.xz Source1: http://mirrors.ibiblio.org/wine/source/%(echo %{version} |cut -d. -f1-2)/%{name}-%{version}.tar.xz.sign +# Old RH stuff for %%{mdvver} <= 201410 Source2: wine.init +# New solution for %%{mdvver} >= 201610 +# See: https://wiki.archlinux.org/index.php/wine (Using Wine as an interpreter for Win16/Win32 binaries) Source3: wine.systemd +# New wine-staging from github by tag Source4: https://github.com/wine-staging/wine-staging/archive/v%{version}.tar.gz?/wine-staging-%{version}.tar.gz +# Wine Gallium Nine on https://github.com/iXit/wine-nine-standalone/ now Source5: https://github.com/iXit/wine-nine-standalone/archive/v%{winenine_ver}.tar.gz?/wine-nine-standalone-%{winenine_ver}.tar.gz Source6: https://github.com/Winetricks/winetricks/archive/%{winetricks_ver}.tar.gz?/winetricks-%{winetricks_ver}.tar.gz Source7: http://kegel.com/wine/wisotool @@ -30,7 +35,17 @@ Source10: wine.rpmlintrc Source11: rosa-wine-desktop-4.4.1.tar.xz Source12: icons-4.0.tar.xz Source20: README.urpmi +Source21: README.install.urpmi.x86_64.staging +Source22: README.install.urpmi.i586.staging + +# (Anssi 05/2008) Adds: +# a: => /media/floppy (/mnt/floppy on 2007.1 and older) +# d: => $HOME (at config_dir creation time, not refreshed if $HOME changes; +# note that Wine also provides $HOME in My Documents) +# com4 => /dev/ttyUSB0 (replaces /dev/ttyS3) +# We have to substitute @MDKVERSION@ in dlls/ntdll/server.c Patch0: wine-3.16-mdkconf.patch +# Russian localization Patch1: wine-3.6-staging-ru-localization.patch # Working workaround for Steam troubles # Also fixed by passing -no-cef-sandbox to the cmd line @@ -38,8 +53,9 @@ Patch2: crossover_hack.patch # Configure searches for %%{_includedir}/OpenAL/al.h and %%{_includedir}/OpenCL/opencl.h, # while we have them in %%{_includedir}/AL/ and %%{_includedir}/CL/ Patch3: wine-4.0-fix-openal-opencl-headers-detection.patch -Patch4: wine-staging-4.4-mock-urpm-broken-pipe.patch +Patch4: wine-staging-4.5-mock-urpm-broken-pipe.patch Patch5: wine-nine-standalone-0.3-ru-localization.patch + BuildRequires: bison BuildRequires: chrpath BuildRequires: desktop-file-utils @@ -48,22 +64,30 @@ BuildRequires: docbook-utils BuildRequires: flex BuildRequires: fontforge BuildRequires: imagemagick +# This is needed to build nine-standalone +BuildRequires: meson BuildRequires: prelink BuildRequires: sgml-tools BuildRequires: valgrind BuildRequires: cups-devel +#Future BuildRequires: faudio-devel BuildRequires: gettext-devel BuildRequires: glibc-static-devel BuildRequires: gpm-devel BuildRequires: gsm-devel #Contrib BuildRequires: hal-devel BuildRequires: isdn4k-utils-devel -BuildRequires: meson BuildRequires: openldap-devel BuildRequires: pcap-devel BuildRequires: perl-devel BuildRequires: ungif-devel BuildRequires: unixODBC-devel +# For wine-nine standalone +%ifarch x86_64 +BuildRequires: wine64-devel +%else +BuildRequires: wine-devel +%endif BuildRequires: pkgconfig(alsa) BuildRequires: pkgconfig(d3d) BuildRequires: pkgconfig(dbus-1) @@ -74,6 +98,7 @@ BuildRequires: pkgconfig(gl) BuildRequires: pkgconfig(glu) BuildRequires: pkgconfig(gnutls) BuildRequires: pkgconfig(gstreamer-1.0) +BuildRequires: pkgconfig(gstreamer-base-1.0) BuildRequires: pkgconfig(gstreamer-plugins-base-1.0) BuildRequires: pkgconfig(gtk+-3.0) BuildRequires: pkgconfig(jack) @@ -90,6 +115,7 @@ BuildRequires: pkgconfig(libva) BuildRequires: pkgconfig(libvkd3d) BuildRequires: pkgconfig(libxslt) BuildRequires: pkgconfig(ncursesw) +BuildRequires: pkgconfig(netapi) BuildRequires: pkgconfig(openal) BuildRequires: pkgconfig(OpenCL) BuildRequires: pkgconfig(osmesa) @@ -108,15 +134,6 @@ BuildRequires: pkgconfig(xinerama) BuildRequires: pkgconfig(xpm) BuildRequires: pkgconfig(xrandr) BuildRequires: pkgconfig(xrender) -# wine-nine -%ifarch x86_64 -BuildRequires: wine64-devel -%else -BuildRequires: wine-devel -%endif - -ExclusiveArch: %{ix86} -ExclusiveArch: x86_64 %ifarch %{ix86} Requires: wine32 = %{EVRD} @@ -145,12 +162,18 @@ Conflicts: wine < %{EVRD} %endif %description -Wine is a program which allows running Microsoft Windows programs -(including DOS, Windows 3.x and Win32 executables) on Unix. It -consists of a program loader which loads and executes a Microsoft -Windows binary, and a library (called Winelib) that implements Windows -API calls using their Unix or X11 equivalents. The library may also -be used for porting Win32 code into native Unix executables. +Wine is a program which allows running Microsoft Windows programs (including +DOS, Windows 3.x, Win32 and Win64 executables) on Unix. It consists of a +program loader which loads and executes a Microsoft Windows binary, and a +library (called Winelib) that implements Windows API calls using their Unix or +X11 equivalents. The library may also be used for porting Win32 code into +native Unix executables. + +##################################################################### +## +## Start of 32bit packages descriptions +## +##################################################################### %ifarch %{ix86} %files @@ -201,8 +224,11 @@ be used for porting Win32 code into native Unix executables. #---------------------------------------------------------------------------- %package -n wine32 -Summary: 32-bit support for wine and wine64 packages +Summary: 32-bit support for Wine and Wine64 packages Group: Emulators +# This is not an EVR-specific requirement, as otherwise on x86_64 urpmi could +# resolve the dependency to wine64 even on upgrades, and therefore replace +# wine+wine32 installation with a wine32+wine64 installation. - Anssi Requires: wine-bin # wine dlopen's these, so let's add the dependencies ourself Requires: alsa-plugins-pulseaudio @@ -220,20 +246,21 @@ Suggests: libncurses5 Suggests: libncurses6 Suggests: libncursesw5 Suggests: libncursesw6 -# This one is in Restricted repository so only suggest it -Suggests: libtxc-dxtn +# This one is now integrated in Mesa +Suggests: libtxc_dxtn.so Suggests: libvulkan1 -# Download wine-gecko from internet, when start wine +# (Anssi) If wine-gecko is not installed, wine pops up a dialog on first +# start proposing to download wine-gecko from sourceforge, while recommending +# to use distribution packages instead. Therefore suggest wine-gecko here: #Suggests: wine-gecko %description -n wine32 -Wine is a program which allows running Microsoft Windows programs -(including DOS, Windows 3.x and Win32 executables) on Unix. - -This package contains the files needed to support 32-bit Windows -programs. +Wine is a program which allows running Microsoft Windows programs (including +DOS, Windows 3.x and Win32 executables) on Unix. This package contains the +files needed to support 32-bit Windows programs. %files -n wine32 +%doc AUTHORS README.install.urpmi %{_bindir}/wine %{_bindir}/wine-preloader %dir %{_libdir}/%{name} @@ -258,22 +285,20 @@ programs. #---------------------------------------------------------------------------- %package -n wine-devel -Summary: Static libraries and headers for %{name} +Summary: Static libraries, headers and programs for %{name} Group: Development/C Requires: wine = %{EVRD} %rename %{devname} Conflicts: wine64-devel %description -n wine-devel -Wine is a program which allows running Microsoft Windows programs -(including DOS, Windows 3.x and Win32 executables) on Unix. - -wine-devel contains the libraries and header files needed to -develop programs which make use of wine. - -Wine is often updated. +Wine is a program which allows running Microsoft Windows programs (including +DOS, Windows 3.x and Win32 executables) on Unix. +This package contains the libraries, the headers and the program files needed +to develop programs running on Wine. %files -n wine-devel +%doc AUTHORS README.install.urpmi %{_bindir}/widl %{_bindir}/winebuild %{_bindir}/winecpp @@ -299,8 +324,19 @@ Wine is often updated. %{_mandir}/man1/wrc.1* %endif +##################################################################### +## +## End of 32bit packages descriptions +## +##################################################################### + #---------------------------------------------------------------------------- -#---------------------------------------------------------------------------- + +##################################################################### +## +## Start of 64bit packages descriptions +## +##################################################################### %ifarch x86_64 %package -n wine64 @@ -346,15 +382,14 @@ Conflicts: wine Conflicts: wine64 < %{EVRD} %description -n wine64 -Wine is a program which allows running Microsoft Windows programs -(including DOS, Windows 3.x and Win32 executables) on Unix. It -consists of a program loader which loads and executes a Microsoft -Windows binary, and a library (called Winelib) that implements Windows -API calls using their Unix or X11 equivalents. The library may also -be used for porting Win32 code into native Unix executables. - -This package contains the Win64 version of Wine. You need the wine32 -package from the 32-bit repository to be able to run 32-bit applications. +Wine is a program which allows running Microsoft Windows programs (including +DOS, Windows 3.x, Win32 and Win64 executables) on Unix. It consists of a +program loader which loads and executes a Microsoft Windows binary, and a +library (called Winelib) that implements Windows API calls using their Unix or +X11 equivalents. The library may also be used for porting Win32 code into +native Unix executables. +This package contains the Win64 version of Wine. You need the wine32 package +from the 32-bit repository to be able to run 32-bit applications. %files -n wine64 %doc ANNOUNCE AUTHORS README README.install.urpmi README.urpmi @@ -418,22 +453,20 @@ package from the 32-bit repository to be able to run 32-bit applications. #---------------------------------------------------------------------------- %package -n wine64-devel -Summary: Static libraries and headers for %{name} +Summary: Static libraries, headers and programs for %{name} Group: Development/C Requires: wine64 = %{EVRD} %rename %{devname} Conflicts: wine-devel %description -n wine64-devel -Wine is a program which allows running Microsoft Windows programs -(including DOS, Windows 3.x and Win32 executables) on Unix. - -wine64-devel contains the libraries and header files needed to -develop programs which make use of wine. - -Wine is often updated. +Wine is a program which allows running Microsoft Windows programs (including +DOS, Windows 3.x, Win32 and Win64 executables) on Unix. +This package contains the libraries, the headers and the program files needed +to develop programs running on Wine. %files -n wine64-devel +%doc AUTHORS README.install.urpmi %{_bindir}/widl %{_bindir}/winebuild %{_bindir}/winecpp @@ -459,10 +492,15 @@ Wine is often updated. %{_mandir}/man1/wrc.1* %endif -#---------------------------------------------------------------------------- +##################################################################### +## +## End of 64bit packages descriptions +## +##################################################################### + #---------------------------------------------------------------------------- -%ifarch x86_64 +%ifarch x86_64 %define wine wine64 %else %define wine wine @@ -471,20 +509,21 @@ Wine is often updated. %package -n %{wine}-binfmt Summary: Support for launching Windows executables directly Group: Emulators +# Avoid dependency loop Requires: %{wine} = %{EVRD} Requires(post): rpm-helper Requires(post): %{wine} = %{EVRD} %if %{with_systemd} Requires(pre,post,preun,postun): systemd %endif -Conflicts: %{wine} < 2:2.21-2 %description -n %{wine}-binfmt Wine is a program which allows running Microsoft Windows programs -(including DOS, Windows 3.x and Win32 executables) on Unix. +(including DOS, Windows 3.x, Win32 and Win64 executables) on Unix. This package provides support for launching Windows executables directly. %files -n %{wine}-binfmt +%doc README %if %{with_systemd} %{_binfmtdir}/%{name}.conf %else @@ -499,7 +538,6 @@ systemctl stop systemd-binfmt.service %binfmt_apply %{name}.conf %postun -n %{wine}-binfmt %_postun_unit systemd-binfmt.service - %else # Old sysvinit %post -n %{wine}-binfmt @@ -516,69 +554,93 @@ systemctl stop systemd-binfmt.service %patch1 -p1 -b .staging-localization %patch2 -p1 -b .crossover_hack %patch3 -p1 -b .fix-headers -pushd ../wine-nine-standalone-%{winenine_ver} -%patch5 -p1 -b .wine-nine-localization -popd # Wine-staging gzip -dc "%{SOURCE4}" | /bin/tar -xf - --strip-components=1 %patch4 -p1 -b .for-mock-urpm-build ./patches/patchinstall.sh DESTDIR="%{_builddir}/wine-%{version}" --all +pushd ../wine-nine-standalone-%{winenine_ver} +%patch5 -p1 -b .wine-nine-localization +popd + sed -i 's,@MDKVERSION@,%{mdvver},' dlls/ntdll/server.c + %build %ifarch %{ix86} -# fix "debugger detected" +# (Anssi 04/2008) bug #39604 +# Some protection systems complain "debugger detected" with our +# -fomit-frame-pointer flag, so disable it. export CFLAGS="%{optflags} -fno-omit-frame-pointer" %endif -# icoutils in contrib + +# (Anssi 04/2008) +# If icotool is present, it is used to rebuild icon files. It is in Contrib +# so we do not do that; this is here to ensure that installed icoutils does +# not change build behaviour. export ICOTOOL=false +# 1. Build wine autoreconf -vfi +# HAL is obsolete, then don't ask for it +# our OSS is too old (< 4), also don't ask for it +# some sound cards need in without-pulse %configure2_5x \ %ifarch x86_64 --enable-win64 \ %endif - --without-pulse + --without-pulse \ + --without-hal \ + --with-xattr \ + --with-gstreamer \ + --without-oss + %make depend %make -# wine-nine-standalone +# 2. Next, build wine-nine-standalone pushd ../wine-nine-standalone-%{winenine_ver} export PKG_CONFIG_PATH=%{_libdir}/pkgconfig mkdir -p ./tmp sed -i "s/@PKG_CONFIG@/i586-unknown-linux-gnu-pkg-config/g" ./tools/cross-wine32.in sed -i "s/@PKG_CONFIG@/x86_64-unknown-linux-gnu-pkg-config/g" ./tools/cross-wine64.in -cp ./tools/cross-wine32.in ./tools/cross-wine32 +cp ./tools/cross-wine32.in ./tools/cross-wine32 cp ./tools/cross-wine64.in ./tools/cross-wine64 meson \ %ifarch x86_64 - --cross-file "./tools/cross-wine64" \ + --cross-file "./tools/cross-wine64" \ %else - --cross-file "./tools/cross-wine32" \ + --cross-file "./tools/cross-wine32" \ %endif - --buildtype "release" \ - --bindir bin \ - --libdir lib \ - $MESONARGS \ - "./tmp/build" + --buildtype "release" \ + --bindir bin \ + --libdir lib \ + $MESONARGS \ + "./tmp/build" ninja -C "./tmp/build" find -L . popd + %install %makeinstall_std LDCONFIG=/bin/true +# Install wisotool install -m 0755 %{SOURCE7} %{buildroot}%{_bindir}/ -# Add winetricks +# Install winetricks install -m 0755 winetricks-%{winetricks_ver}/src/winetricks %{buildroot}%{_bindir}/ +# Note: binfmt is insecure (see https://nixtux.ru/450), +# so we will put it in a separate package +# Allow users to launch Windows programs by just clicking on the .exe file... %if %{with_systemd} -install -m 0644 %{SOURCE3} -D %{buildroot}%{_binfmtdir}/%{name}.conf +# ... using systemd (>= 230) +install -m 644 %{SOURCE3} -D %{buildroot}%{_binfmtdir}/%{name}.conf %else -install -m 0755 %{SOURCE2} -D %{buildroot}%{_initrddir}/%{name} +# ... using the old sysvinit way +install -m755 %{SOURCE2} -D %{buildroot}%{_initrddir}/%{name} %endif mkdir -p %{buildroot}%{_sysconfdir}/xdg/menus/applications-merged @@ -598,7 +660,7 @@ desktop-file-install --vendor="" \ --dir %{buildroot}%{_datadir}/applications %{buildroot}%{_datadir}/applications/wine.desktop %ifarch x86_64 -# fix the binary name +# fix the binary name in the .desktop file sed -i 's,Exec=wine ,Exec=wine64 ,' %{buildroot}%{_datadir}/applications/wine.desktop %endif @@ -609,7 +671,7 @@ chrpath -d %{buildroot}%{_bindir}/{wine64,wineserver,wmc,wrc} %{buildroot}%{_lib chrpath -d %{buildroot}%{_bindir}/{wine,wineserver,wmc,wrc} %{buildroot}%{_libdir}/%{name}/*.so %endif -# wine-nine-standalone +# Install wine-nine-standalone stuff pushd ../wine-nine-standalone-%{winenine_ver} install -m 755 ./tmp/build/ninewinecfg/ninewinecfg.exe.so %{buildroot}/%{_libdir}/wine/ninewinecfg.exe.so install -m 755 ./tmp/build/ninewinecfg/ninewinecfg.exe.fake %{buildroot}/%{_libdir}/wine/fakedlls/ninewinecfg.exe @@ -620,15 +682,8 @@ popd # Some advices to user cp %{SOURCE20} . %ifarch x86_64 -cat > README.install.urpmi < README.install.urpmi <