SHA256
1
0
forked from pool/wine
wine/wine.spec
Marcus Meissner bc5890debc Accepting request 887367 from home:darix:branches:Emulators
- Fix raw input with wine-staging: To fix it we copied the
  0008-winex11.drv-Listen-to-RawMotion-and-RawButton-events.patch
  at a886228fbcefe7b8de06d2dd7182272df6cc3c36 and overwrite the
  copy in the staging tarball. We can not just upgrade the tar ball
  as it doesnt apply cleanly anymore.
  This can be dropped with 6.7

OBS-URL: https://build.opensuse.org/request/show/887367
OBS-URL: https://build.opensuse.org/package/show/Emulators/wine?expand=0&rev=818
2021-04-22 06:47:51 +00:00

513 lines
15 KiB
RPMSpec

#
# spec file for package wine
#
# Copyright (c) 2021 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%define projectname wine
%global flavor @BUILD_FLAVOR@%nil
%define staging 0
%define nine 0
%if "%flavor" == "staging" || "%flavor" == "staging-nine"
%define staging 1
%endif
%if "%flavor" == "nine" || "%flavor" == "staging-nine"
%define nine 1
%endif
# needs to be on top due to usage of %version macro below
%define realver 6.6
Version: 6.6
Release: 0
%if "%{flavor}" != ""
Name: wine%{?flavor:-}%{?flavor}
Provides: wine = %{version}-%{release}
%else
Name: wine
%endif
Conflicts: otherproviders(wine)
BuildRequires: alsa-devel
BuildRequires: autoconf
BuildRequires: bison
%ifarch aarch64
BuildRequires: clang >= 5
%endif
BuildRequires: cups-devel
%if 0%{?suse_version} >= 1550
BuildRequires: vkd3d-devel
%endif
BuildRequires: FAudio-devel
BuildRequires: dbus-1-devel
BuildRequires: desktop-file-utils
BuildRequires: fdupes
BuildRequires: flex
BuildRequires: fontconfig-devel
BuildRequires: freeglut-devel
BuildRequires: freetype2-devel
BuildRequires: giflib-devel
BuildRequires: glib2-devel
BuildRequires: gstreamer-plugins-base-devel
BuildRequires: krb5-devel
BuildRequires: libgnutls-devel
BuildRequires: libgphoto2-devel
BuildRequires: libgsm-devel
BuildRequires: libjpeg-devel
BuildRequires: liblcms2-devel
BuildRequires: libpcap-devel
BuildRequires: libpng-devel
BuildRequires: libpulse-devel
BuildRequires: libtiff-devel
BuildRequires: libv4l-devel
BuildRequires: libxml2-devel
BuildRequires: libxslt-devel
%if 0%{?suse_version} >= 1330
BuildRequires: mpg123-devel
BuildRequires: vulkan-devel
Provides: wine-mp3 = %version
Obsoletes: wine-mp3 < %version
%else
Recommends: wine-mp3
%endif
BuildRequires: SDL2-devel
BuildRequires: ncurses-devel
BuildRequires: ocl-icd-devel
BuildRequires: openal-soft-devel
BuildRequires: openldap2-devel
BuildRequires: openssl-devel
BuildRequires: pkgconfig
BuildRequires: sane-backends-devel
BuildRequires: update-desktop-files
BuildRequires: valgrind-devel
%if 0%{?suse_version} >= 1550
%ifarch x86_64
BuildRequires: mingw64-cross-gcc
%endif
%ifarch %ix86
BuildRequires: mingw32-cross-gcc
%endif
%endif
BuildRequires: pkgconfig(egl)
BuildRequires: pkgconfig(gl)
BuildRequires: pkgconfig(glu)
BuildRequires: pkgconfig(libudev)
BuildRequires: pkgconfig(libusb-1.0)
BuildRequires: pkgconfig(osmesa)
BuildRequires: pkgconfig(x11)
BuildRequires: pkgconfig(x11-xcb)
BuildRequires: pkgconfig(xcb)
BuildRequires: pkgconfig(xcb-dri3)
BuildRequires: pkgconfig(xcb-present)
BuildRequires: pkgconfig(xcb-xfixes)
BuildRequires: pkgconfig(xcomposite)
BuildRequires: pkgconfig(xcursor)
BuildRequires: pkgconfig(xcursor)
BuildRequires: pkgconfig(xext)
BuildRequires: pkgconfig(xfixes)
BuildRequires: pkgconfig(xi)
BuildRequires: pkgconfig(xinerama)
BuildRequires: pkgconfig(xrandr)
BuildRequires: pkgconfig(xrender)
BuildRequires: pkgconfig(xxf86vm)
BuildRequires: pkgconfig(zlib)
Summary: An MS Windows Emulator
License: LGPL-2.1-or-later
Group: System/Emulators/PC
URL: http://www.winehq.org/
Source0: https://dl.winehq.org/wine/source/6.x/%{projectname}-%{realver}.tar.xz
Source41: wine.keyring
Source42: https://dl.winehq.org/wine/source/6.x/%{projectname}-%{realver}.tar.xz.sign
Source2: http://kegel.com/wine/wisotool
Source3: README.SUSE
Source4: wine.desktop
Source6: wine-msi.desktop
Source5: ubuntuwine.tar.bz2
Source7: baselibs.conf
Source8: wine-rpmlintrc
# PATCH FIX UPSTREAM wine-winegcc-missing-includes.patch fix https://bugs.winehq.org/show_bug.cgi?id=50996
Patch0: wine-winegcc-missing-includes.patch
# SUSE specific patches
# - currently none, but add them here
#Patch0: susefixes.patch
Source99: a886228fbcefe7b8de06d2dd7182272df6cc3c36.patch
Recommends: wine-gecko >= 2.47.2
Conflicts: wine-gecko < 2.47.2
Recommends: wine-mono >= 6.1.1
Conflicts: wine-mono < 6.1.1
# not packaged in distro...
Recommends: wine-mono
Recommends: dosbox
Recommends: alsa-plugins
Recommends: alsa-plugins-pulse
Recommends: winetricks
Requires: samba-winbind
%ifarch x86_64
Requires: %{name}-32bit = %{version}
%endif
BuildRoot: %{_tmppath}/%{name}-%{version}-build
ExclusiveArch: %{ix86} x86_64 ppc armv7l armv7hl aarch64
%if %{staging}
# upstream patch target version
%define staging_version 6.6
Source100: wine-staging-%{staging_version}.tar.xz
BuildRequires: gtk3-devel
BuildRequires: libOSMesa-devel
BuildRequires: libva-devel
%endif
%if %{nine}
# upstream patch target version
%define nine_version 4.1
BuildRequires: Mesa-libd3d-devel
Requires: Mesa-libd3d
BuildRequires: libOSMesa-devel
BuildRequires: pkgconfig(dri2proto)
Source110: wine-d3d9-patches-%{nine_version}.tar.xz
%endif
%description
Wine is a compatibility layer capable of running Windows
applications. 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 and allowing you to cleanly integrate
Windows applications into your desktop.
%if %{staging}
This WINE flavor contains the "staging" development patchset
on top of the regular Wine release.
%endif
%if %{nine}
This WINE flavor contains Direct3D9 enhancements patches for Gallium Nine support.
%endif
You can run your Windows executables with it and write your Windows
programs under Linux and link against the WINE libraries. It is not
necessary to have a Windows installation to run WINE.
Refer to %{_datadir}/doc/packages/wine/README.SUSE. There is more
documentation available in that directory. Read 'man wine' for further
information.
You can invoke wine by entering 'wine program.exe'. Configure it by
running 'winecfg'.
%package devel
Summary: Files for Wine development
Group: Development/Libraries/C and C++
%if "%{flavor}" != ""
Provides: wine-devel = %{version}
%endif
Conflicts: otherproviders(wine-devel)
%description devel
This RPM contains the header files and development tools for the WINE
libraries.
%prep
%setup -q -n wine-%{realver}
%autopatch -p1
#
cp %{S:3} .
#
%if %{staging}
# apply wine staging patch set on top of the wine release.
tar xf %{SOURCE100}
cp %{SOURCE99} ./wine-staging-%staging_version/patches/user32-rawinput-mouse/0008-winex11.drv-Listen-to-RawMotion-and-RawButton-events.patch
bash ./wine-staging-%staging_version/patches/patchinstall.sh --all
%endif
%if %{nine}
tar xf %{SOURCE110}
%if %{staging}
patch --no-backup-if-mismatch -p1 -i ./wine-d3d9-patches-%nine_version/staging-helper.patch
%else
patch --no-backup-if-mismatch -p1 -i ./wine-d3d9-patches-%nine_version/d3d9-helper.patch
%endif
patch --no-backup-if-mismatch -p1 -i ./wine-d3d9-patches-%nine_version/wine-d3d9.patch
%endif
%build
# currently not building with LTO
%define _lto_cflags %{nil}
cat VERSION
export WIDL_TIME_OVERRIDE="0" # for reproducible builds.
%ifarch %ix86
# e.g. Steam and other copy protections hate EBP being used for something else.
export RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-fomit-frame-pointer//'`
%endif
%ifarch aarch64
# ARM64 now requires clang
# https://source.winehq.org/git/wine.git/commit/8fb8cc03c3edb599dd98f369e14a08f899cbff95
export CC="/usr/bin/clang"
%endif
%if %{staging} || %{nine}
autoreconf -i -f
%endif
# keep just for susepatches with configure changes
#autoconf
#autoheader -I include
CFLAGS="$RPM_OPT_FLAGS" \
%configure \
--with-x \
%ifarch %{arm}
--with-float-abi=hard \
%endif
%ifarch x86_64 aarch64
--enable-win64 \
%endif
%if %{nine}
--with-d3d9-nine \
%endif
--verbose
grep "have_x=yes" config.log || exit 1
# generate baselibs.conf
%ifarch %ix86 aarch64
echo "# autogenerated in .spec file" >%SOURCE7
echo "%name" >> %SOURCE7
echo " +^/usr/bin/wine\$" >> %SOURCE7
echo " +^/usr/bin/wine-preloader\$" >> %SOURCE7
echo " +^/usr/lib/wine/fakedlls" >> %SOURCE7
echo " +^/usr/lib/wine/*" >> %SOURCE7
grep SONAME_ config.log
grep SONAME_ config.log|grep -v 'so"'|sed -e 's/^.*\(".*"\).*$/ requires \1/;'|sort -u >>%SOURCE7
echo " recommends \"libpulse0-32bit\"" >> %SOURCE7
echo " recommends \"alsa-plugins-pulse-32bit\"" >> %SOURCE7
echo " recommends \"alsa-plugins-32bit\"" >> %SOURCE7
echo " recommends \"Mesa-libGL1-32bit\"" >> %SOURCE7
%if 0%{?suse_version} >= 1330
echo " obsoletes \"wine-mp3-32bit\"" >> %SOURCE7
%else
echo " recommends \"wine-mp3-32bit\"" >> %SOURCE7
%endif
%if 0%{?suse_version} >= 1310
echo " requires \"p11-kit-32bit\"" >> %SOURCE7
%endif
%if %{nine}
echo " requires \"Mesa-libd3d-32bit\"" >> %SOURCE7
%endif
%if "%{flavor}" != ""
echo " provides \"wine-<targettype> = <version>\"" >> %SOURCE7
%endif
echo " conflicts \"otherproviders(wine-<targettype>)\"" >> %SOURCE7
echo "%name-devel" >> %SOURCE7
echo " +^/usr/lib/wine/.*def" >> %SOURCE7
%if "%{flavor}" != ""
echo " provides \"wine-devel-<targettype> = <version>\"" >> %SOURCE7
%endif
echo " conflicts \"otherproviders(wine-devel-<targettype>)\"" >> %SOURCE7
cat %SOURCE7
%endif
make %{?_smp_mflags} all
%install
make install DESTDIR=%{buildroot}
# install desktop file
install -d %{buildroot}%{_datadir}/applications/
%suse_update_desktop_file %{SOURCE4} System Emulator
install -m 0644 %SOURCE4 %{buildroot}%{_datadir}/applications/
install -m 0644 %SOURCE6 %{buildroot}%{_datadir}/applications/
install -m 0755 %SOURCE2 %{buildroot}%{_bindir}/
mv %{buildroot}/%{_mandir}/de.UTF-8 %{buildroot}/%{_mandir}/de
mv %{buildroot}/%{_mandir}/fr.UTF-8 %{buildroot}/%{_mandir}/fr
%ifnarch x86_64 aarch64
mv %{buildroot}/%{_mandir}/pl.UTF-8 %{buildroot}/%{_mandir}/pl
%endif
tar -xjf %{SOURCE5}
# Copied from Ubuntu Wine out of debian.diff
# https://launchpad.net/~ubuntu-wine/+archive/ppa/+packages
# taken on 1.2rc2 time.
cd ubuntuwine
install -d %{buildroot}%{_sysconfdir}/xdg/menus/applications-merged
install -c -m 644 wine.menu %{buildroot}%{_sysconfdir}/xdg/menus/applications-merged
# Install application-specific desktop files
install -d %{buildroot}%{_datadir}/applications
install -c -m 644 *.desktop %{buildroot}%{_datadir}/applications/
sed -i "/X-SuSE-translate/d" %{buildroot}%{_datadir}/applications/*.desktop
install -d %{buildroot}%{_datadir}/desktop-directories/
install -c -m 644 *.directory %{buildroot}%{_datadir}/desktop-directories/
# Correct desktop files' categories
%suse_update_desktop_file -n -r wine-notepad Utility TextEditor
%suse_update_desktop_file -n -r wine-uninstaller System Emulator
%suse_update_desktop_file -n -r wine-winecfg System Emulator
%suse_update_desktop_file -n -r wine-regedit System Emulator
%suse_update_desktop_file -n -r wine-winehelp System Emulator
%suse_update_desktop_file -n -r wine-msi System Emulator
%suse_update_desktop_file -n -r wine-browsedrive System Emulator
%suse_update_desktop_file -n -r wine-winefile System FileManager
%suse_update_desktop_file -n -r wine-winemine Game BoardGame
# Install icons
install -d %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/
install -c -m 644 *.svg %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/
cd ..
# find the implicit dependencies
%define winedir %_builddir/%projectname-%realver
cat >%winedir/my-find-requires.sh <<EOF
#!/bin/bash
%{__find_requires}
%ifarch x86_64 aarch64
grep SONAME_ %winedir/config.log|grep -v 'so"'|sed -e 's/^.*"\(.*\)".*$/\1()(64bit)/;'|sort -u
%else
grep SONAME_ %winedir/config.log|grep -v 'so"'|sed -e 's/^.*"\(.*\)".*$/\1/;'|sort -u
%endif
EOF
chmod 755 %winedir/my-find-requires.sh
%define _use_internal_dependency_generator 0
%define __find_requires %winedir/my-find-requires.sh
# breaks btrfs installation, see bnc#723402
# %%fdupes -s %{buildroot}
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%files
%defattr(-,root,root)
%license LICENSE LICENSE.OLD
%doc ANNOUNCE AUTHORS README*
%{_bindir}/function_grep.pl
%{_bindir}/msidb
%{_bindir}/msiexec
%{_bindir}/notepad
%{_bindir}/regedit
%{_bindir}/regsvr32
%{_bindir}/wineboot
%{_bindir}/winecfg
%{_bindir}/wineconsole
%{_bindir}/winedbg
%{_bindir}/winefile
%{_bindir}/winemine
%{_bindir}/winepath
%{_bindir}/wineserver
%{_bindir}/wisotool
%{_datadir}/wine
%ifnarch x86_64 aarch64
%doc %{_mandir}/man1/wine.1*
%endif
%doc %{_mandir}/man1/winedbg.1*
%doc %{_mandir}/man1/wineserver.1*
%ifnarch x86_64 aarch64
%doc %dir %doc %{_mandir}/pl
%doc %dir %doc %{_mandir}/pl/man1
%doc %{_mandir}/*/man1/wine.1*
%endif
%doc %{_mandir}/*/man1/wineserver.1*
%doc %{_mandir}/man1/msiexec.1.*
%doc %{_mandir}/man1/notepad.1.*
%doc %{_mandir}/man1/regedit.1.*
%doc %{_mandir}/man1/regsvr32.1.*
%doc %{_mandir}/man1/wineboot.1.*
%doc %{_mandir}/man1/winebuild.1.*
%doc %{_mandir}/man1/winecfg.1.*
%doc %{_mandir}/man1/wineconsole.1.*
%doc %{_mandir}/man1/winecpp.1.*
%doc %{_mandir}/man1/winefile.1.*
%doc %{_mandir}/man1/winemine.1.*
%doc %{_mandir}/man1/winepath.1.*
%dir %{_sysconfdir}/xdg/menus/
%dir %{_sysconfdir}/xdg/menus/applications-merged
%config %{_sysconfdir}/xdg/menus/applications-merged/*.menu
%{_datadir}/applications/*.desktop
%dir %{_datadir}/desktop-directories/
%{_datadir}/desktop-directories/*.directory
%dir %{_datadir}/icons/hicolor
%dir %{_datadir}/icons/hicolor/scalable
%dir %{_datadir}/icons/hicolor/scalable/apps
%{_datadir}/icons/hicolor/scalable/apps/*.svg
%ifarch %ix86
%{_bindir}/wine
%{_bindir}/wine-preloader
%endif
%ifarch ppc %arm
%{_bindir}/wine
%endif
%ifarch x86_64 aarch64
%{_bindir}/wine64
%{_bindir}/wine64-preloader
%endif
%{_libdir}/wine/*.so
%if 0%{?suse_version} >= 1550
%ifnarch %arm aarch64
%{_libdir}/wine/*.acm
%{_libdir}/wine/*.ax
%{_libdir}/wine/*.com
%{_libdir}/wine/*.cpl
%{_libdir}/wine/*.dll
%endif
%ifarch %ix86
%{_libdir}/wine/*.dll16
%{_libdir}/wine/*.drv16
%{_libdir}/wine/*.exe16
%{_libdir}/wine/*.mod16
%{_libdir}/wine/*.vxd
%endif
%ifnarch %arm aarch64
%{_libdir}/wine/*.drv
%{_libdir}/wine/*.exe
%{_libdir}/wine/*.ocx
%{_libdir}/wine/*.sys
%endif
%endif
%ifnarch %arm aarch64
%if 0%{?suse_version} > 1500
%{_libdir}/wine/*.tlb
%else
%{_libdir}/wine/*.tlb.so
%endif
%endif
%dir %{_libdir}/wine
%dir %{_libdir}/wine/fakedlls
%{_libdir}/wine/fakedlls/*
%{_libdir}/lib*.so.*
%files devel
%defattr(-,root,root)
%{_includedir}/wine
%{_bindir}/widl
%{_bindir}/winebuild
%{_bindir}/winecpp
%{_bindir}/winedump
%{_bindir}/wineg++
%{_bindir}/winegcc
%{_bindir}/winemaker
%{_bindir}/wmc
%{_bindir}/wrc
%{_libdir}/wine/*.def
%{_libdir}/wine/*.a
%doc %{_mandir}/man1/winemaker.1*
%doc %{_mandir}/*/man1/winemaker.1*
%doc %{_mandir}/man1/widl.1*
%doc %{_mandir}/man1/winedump.1*
%doc %{_mandir}/man1/wineg++.1*
%doc %{_mandir}/man1/winegcc.1*
%doc %{_mandir}/man1/wmc.1*
%doc %{_mandir}/man1/wrc.1*
# {_datadir}/aclocal/wine.m4
%changelog