File wine.spec of Package wine

#
# 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/
#


# The 32bit package (wine-32bit) can be obtained using the following command:
#   osc build --baselibs --disable-debuginfo <openSUSE version> i586 wine.spec
#
# If the package is to be installed with a different prefix, change it here
# using %%define _prefix /usr/lib/wine-<suffix>
%define changedprefix %(test %_prefix != /usr && echo "1" || echo "0")

%if 0%{?changedprefix}
%define _bindir %_prefix/bin
%ifarch  x86_64
%define _libdir %_prefix/lib64
%else
%define _libdir %_prefix/lib
%endif
%define _mandir %_prefix/man
%define _includedir %_prefix/include
%define _defaultdocdir %_prefix/share/doc
%endif

# The variable prjname points to the wine project name, and should therefor
# probably stay the same forever.
#
# The package name, that is defined by the rpm tag Name, may be changed
# which will result in a different package name.  In combination with a
# different file path location (_prefix), it could be installed along side
# the wine package that is provided by openSUSE (the distribution).
%define prjname 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

%if "%{flavor}" == ""
Name:           wine
%else
Name:           wine%{?flavor:-}%{?flavor}
Provides:       wine = %{version}
%endif

# Is this a native (openSUSE distribution) package?
# modpkgname: Modified Package Name
%define modpkgname %(test %name != "wine" && echo "1" || echo "0")

BuildRequires:  Mesa-devel
BuildRequires:  alsa-devel
BuildRequires:  autoconf
BuildRequires:  bison
BuildRequires:  cups-devel
BuildRequires:  dbus-1-devel
BuildRequires:  desktop-file-utils
# BuildRequires:  FAudio-devel
BuildRequires:  flex
BuildRequires:  fontconfig-devel
BuildRequires:  freeglut-devel
BuildRequires:  freetype2-devel
BuildRequires:  giflib-devel
# BuildRequires:  libjpeg-devel
BuildRequires: 	krb5-devel
BuildRequires:  libOSMesa-devel
BuildRequires:	libcom_err-devel
BuildRequires:  libgnutls-devel
BuildRequires:  libgphoto2-devel
# BuildRequires:  libgsm-devel
# BuildRequires:  liblcms2-devel
%if 0%{?sle_version} <= 150300 && 0%{?is_opensuse}
BuildRequires:  libnetapi-devel
%else
BuildRequires:  samba-devel
%endif
BuildRequires:  libpcap-devel
# BuildRequires:  libpng-devel
BuildRequires:  libpulse-devel
BuildRequires:	SDL2-devel
# BuildRequires:  libtiff-devel
# BuildRequires:  libudev-devel
# BuildRequires:  libusb-1_0-devel
BuildRequires:	libXfixes-devel
BuildRequires:  libxkbregistry-devel
BuildRequires:  libxkbcommon-devel
# BuildRequires:  libxml2-devel
# BuildRequires:  libxslt-devel
# BuildRequires:  mpg123-devel
BuildRequires:  ncurses-devel
BuildRequires:  opencl-headers
BuildRequires:  ocl-icd-devel
# BuildRequires:  openldap2-devel
BuildRequires:  openssl-devel
BuildRequires:  pcsc-lite-devel
BuildRequires:  pkgconfig
BuildRequires:  sane-backends-devel
BuildRequires:  update-desktop-files
BuildRequires:  unixODBC-devel
BuildRequires:  valgrind-devel
# BuildRequires:	vkd3d-devel
BuildRequires:  vulkan-devel
# BuildRequires:  xorg-x11-devel
BuildRequires:  gstreamer-plugins-base-devel
BuildRequires:  libv4l-devel
BuildRequires:  ffmpeg-4-libavcodec-devel
BuildRequires:  ffmpeg-4-libavformat-devel
BuildRequires:  ffmpeg-4-libavutil-devel
# BuildRequires:  openal-soft-devel
BuildRequires:  pkgconfig(libusb-1.0)
BuildRequires:  pkgconfig(wayland-client)
BuildRequires:  pkgconfig(x11)
BuildRequires:  pkgconfig(x11-xcb)
BuildRequires:  pkgconfig(xcb)
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(libudev)
# for the PE DLLs
%ifarch x86_64
BuildRequires:  mingw64-cross-gcc
%endif
%ifarch %ix86
BuildRequires:  mingw32-cross-gcc
%endif

%define realver 9.19
Version:        9.19
Release:        0
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/9.x/wine-%{realver}.tar.xz
Source41:       wine.keyring
Source42:       https://dl.winehq.org/wine/source/9.x/wine-%{realver}.tar.xz.sign
Source3:        README.SUSE
Source4:        wine.desktop
Source5:        ubuntuwine.tar.bz2
Source6:        wine-msi.desktop
Source7:        baselibs.conf
Source8:        wine-rpmlintrc
Recommends:     winetricks

%if %{modpkgname}
  %if %{changedprefix}
    %define pkgconflict 0
  %else
    %define pkgconflict 1
Conflicts:      wine
  %endif
%else
  %define pkgconflict 0
%endif

%if 0%{?suse_version} > 1120
%ifarch x86_64
Requires:       %{name}-32bit = %{version}
%endif
%endif
%ifarch %ix86 x86_64
Requires:       wine-gecko >= 2.47.2
%endif
# for ntlm_auth helper
Requires:       samba-winbind
%if 0%{?suse_version} >= 1500 || ( 0%{?sle_version} == 120300 && 0%{?is_opensuse} )
Provides:       wine-mp3 = %version
Obsoletes:      wine-mp3 < %version
%else
Recommends:     wine-mp3
%endif
# We built it here, but it is kind of large
Recommends:     wine-mono
# for DOS support
Recommends:     dosbox
# To have correct Pulseaudio support.
Recommends:     alsa-plugins
Recommends:     alsa-plugins-pulse
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
%if %{staging}
# upstream patch target version
%define staging_version 9.19
Source100:      wine-staging-%{staging_version}.tar.xz
%if 0%{?suse_version} >= 1210
BuildRequires:  gtk3-devel
BuildRequires:  libva-devel
BuildRequires:  python3
%endif
# for an xaudio2_7 patch which requires ffmpeg-4.x
# which presents in Leap 42.3 and Leap 15.1, but not in SLE 15 and Leap 15.0
%if 0%{?suse_version} > 1500 || ( 0%{?sle_version} == 120300 && 0%{?is_opensuse} ) || ( 0%{?sle_version} == 150100 && 0%{?is_opensuse} )
BuildRequires:  ffmpeg-4-libavcodec-devel
BuildRequires:  ffmpeg-4-libavformat-devel
BuildRequires:  ffmpeg-4-libavutil-devel
%endif
%endif
%if %{nine}
# upstream patch target version
%define nine_version 4.1
BuildRequires:  Mesa-libd3d-devel
Requires:       Mesa-libd3d
%if 0%{?suse_version} > 1500
BuildRequires:  xorgproto-devel
%else
BuildRequires:  dri2proto-devel
%endif
Source110:      wine-d3d9-patches-%{nine_version}.tar.xz
%endif
%if 0%{?suse_version} >= 1500
# for the PE DLLs
%ifarch x86_64
BuildRequires:  mingw64-cross-gcc
%endif
%ifarch %ix86
%if 0%{?suse_version} >= 1500
BuildRequires:  mingw32-cross-gcc
%endif
%endif
%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.

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.

Please have a look at /usr/share/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' wine can be
configured by running 'winecfg'.

%package devel
Summary:        Files for Wine development
Group:          Development/Libraries/C and C++

%description devel
This RPM contains the header files and development tools for the WINE
libraries.

%ifarch x86_64
%package 32bit-build-deps
Summary:        Wine build dependencies for 32bit builds on x86_64 systems
Group:          Development/Libraries/C and C++
Requires:       alsa-devel-32bit
Requires:       cups-devel-32bit
Requires:       dbus-1-devel-32bit
Requires:       fontconfig-devel-32bit
Requires:       freeglut-devel-32bit
Requires:       freetype2-devel-32bit
Requires:       glibc-devel-32bit
Requires:       glu-devel-32bit
Requires:       krb5-devel-32bit
Requires:       libOSMesa-devel-32bit
Requires:       libX11-devel-32bit
Requires:       libXcomposite-devel-32bit
Requires:       libXcursor-devel-32bit
Requires:       libXext-devel-32bit
Requires:       libXfixes-devel-32bit
Requires:       libXi-devel-32bit
Requires:       libXinerama-devel-32bit
Requires:       libXrandr-devel-32bit
Requires:       libXrender-devel-32bit
Requires:       libXxf86vm-devel-32bit
Requires:       libglvnd-devel-32bit
Requires:       libgnutls-devel-32bit
# Requires:       libgsm-devel-32bit
# Requires:       libjpeg8-devel-32bit
# Requires:       liblcms2-devel-32bit
Requires:       libpcap-devel-32bit
# Requires:       libpng16-devel-32bit
Requires:       libpulse-devel-32bit
# Requires:       libtiff-devel-32bit
# Requires:       libudev-devel-32bit
# Requires:       libxml2-devel-32bit
# Requires:       libxslt-devel-32bit
# Requires:       mpg123-devel-32bit
Requires:       ncurses-devel-32bit
# Requires:       openal-soft-devel-32bit
# Requires:       openldap2-devel-32bit
# Requires:       zlib-devel-32bit
#Requires:	gcc-32bit

%description 32bit-build-deps
This virtual package provides the 32bit development build dependencies for use on x86_64.
%endif

%prep
%setup -q -n wine-%realver
%autopatch -p1

echo "%%suse version is %suse_version"
#
cp %{SOURCE3} .
#
%if %{staging}
# apply wine staging patch set on top of the wine release.
tar xf %{SOURCE100}
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}
export WIDL_TIME_OVERRIDE="0"         # for reproducible builds.
cat VERSION
%ifarch %ix86
# Steam wants proper EBP frames to hook functions
export RPM_OPT_FLAGS=`echo %{optflags}|sed -e 's/-fomit-frame-pointer//'`
%endif
%if 0%{?sles_version} == 11
if [ -f /usr/bin/gcc-4.6 ]; then
	export CC=gcc-4.6
fi
if [ -f /usr/bin/gcc-4.7 ]; then
	export CC=gcc-4.7
fi
if [ -f /usr/bin/gcc-4.8 ]; then
	export CC=gcc-4.8
fi
%else
export CC=gcc
%endif

%ifarch aarch64
# ARM64 curently requires clang
# https://source.winehq.org/git/wine.git/commit/8fb8cc03c3edb599dd98f369e14a08f899cbff95
export CC="/usr/bin/clang"
%endif

%if %{staging} || %{nine}
autoreconf -i -f
%endif

# Only as long as the configure.ac patch is there
#autoreconf -i -f

#CFLAGS="-DLDAP_DEPRECATED=1 $RPM_OPT_FLAGS" \
CFLAGS='-DLDAP_DEPRECATED=1 -fmessage-length=0 -grecord-gcc-switches -O2 -Wall -funwind-tables -fasynchronous-unwind-tables -g'

%configure \
	--with-x --verbose \
%ifarch x86_64
	--enable-win64 \
%endif
%if %{nine}
    --with-d3d9-nine \
%endif

grep "have_x=yes" config.log || exit 1

# generate baselibs.conf
%ifarch %ix86
grep SONAME_ config.log
( echo "# autogenerated in .spec file"
  echo "%name"
  echo " +^%{_prefix}/bin/wine\$"
  echo " +^%{_prefix}/bin/wine-preloader\$"
  echo " +^%{_prefix}/lib/wine/fakedlls"
  echo " +^%{_prefix}/lib/wine/*"
  %if %{pkgconflict}
    echo " conflicts \"wine-32bit\""
  %endif
%if 0%{?suse_version} >= 1500 || ( 0%{?sle_version} == 120300 && 0%{?is_opensuse} )
  echo " obsoletes \"wine-mp3-32bit\""
%else
  echo " recommends \"wine-mp3-32bit\""
%endif
  grep SONAME_ config.log|grep -v 'so"'|sed -e 's/^.*\(".*"\).*$/	requires \1/;'|sort -u
%if 0%{?suse_version} >= 1210
  echo " recommends \"libpulse0-32bit\""
  echo " recommends \"alsa-plugins-pulse-32bit\""
  echo " recommends \"alsa-plugins-32bit\""
%endif
%if 0%{?suse_version} >= 1310
  echo " requires \"p11-kit-32bit\""
%endif
%if %{nine}
  echo " requires \"Mesa-libd3d-32bit\""
%endif
  echo "%name-devel"
  echo "  +^%{_prefix}/lib/wine/.*def"
) > %SOURCE7
cat %SOURCE7
%endif

# %if 0%{?sle_version} >= 150300 && 0%{?is_opensuse}
# %ifarch %ix86
#  make -j1
# %else
  make %{?_smp_mflags} all
# %endif
# %endif

%install
make install DESTDIR=%{buildroot}

%ifarch x86_64
mkdir -p \
   %{buildroot}/usr/lib/wine/i386-windows \
   %{buildroot}/usr/lib/wine/i386-unix
ln -s \
    /usr/lib/wine/i386-windows \
    /usr/lib/wine/i386-unix    \
  %buildroot/usr/%_lib/wine/
%endif

# install desktop file
install -d %{buildroot}%{_datadir}/applications/
install -m 0644 %{SOURCE4} %{buildroot}%{_datadir}/applications/
install -m 0644 %{SOURCE6} %{buildroot}%{_datadir}/applications/
mv %{buildroot}/%{_mandir}/de.UTF-8 %{buildroot}/%{_mandir}/de
mv %{buildroot}/%{_mandir}/fr.UTF-8 %{buildroot}/%{_mandir}/fr
%ifnarch x86_64
# hack as on 64bit currently wine64.man dont get installed
mv %{buildroot}/%{_mandir}/pl.UTF-8 %{buildroot}/%{_mandir}/pl
%endif

%if 0%{?changedprefix}

  # When this wine package is not installed in the standard %prefix (/usr);
  # Create the doc directory
  install -d -m 755 %{buildroot}/%{_defaultdocdir}

  # The manpages are not automatically compressed.  Take care that they
  # are compressed.
  find %{buildroot}/%{_mandir} -type f -name "*.1"
  for MAN in $(find %{buildroot}/%{_mandir} -type f -name "*.1"); do
    gzip $MAN
  done

  ( cd %{buildroot}/%{_mandir}/man1
    rm winecpp.1 wineg++.1
    ln -s winegcc.1.gz winecpp.1.gz
    ln -s winegcc.1.gz wineg++.1.gz
  )
%endif

tar -xjf %{SOURCE5}
# Copied from Ubuntu Wine out of debian.diff
# https://launchpad.net/~ubuntu-wine/+archive/ppa/+packages
# taken on 1.2rc6 time.
( cd ubuntuwine

  install -d %{buildroot}%{_sysconfdir}/xdg/menus/applications-merged
  %if ! 0%{?changedprefix}
    # Do not install the menu file, when the prefix has changed (it is not the default
    # openSUSE package anymore).  A solution could be to change the installed file name
    # to e.g. %%name.menu, but that could result in a duplicated menu structure, besides
    # that the menu related files (.desktop, .directory, etc) probably not installed in
    # a directory that is searched by the menu maker.  Leave it here as a todo item.
    install -c -m 644 wine.menu %{buildroot}%{_sysconfdir}/xdg/menus/applications-merged
  %endif

  # Install application-specific desktop files
  install -d %{buildroot}%{_datadir}/applications
  install -c -m 644 *.desktop %{buildroot}%{_datadir}/applications/

  install -d %{buildroot}%{_datadir}/desktop-directories/
  install -c -m 644 *.directory %{buildroot}%{_datadir}/desktop-directories/

  # Install icons
  install -d %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/
  install -c -m 644 *.svg %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/
)

# breaks btrfs installation, see bnc#723402
# fdupes %{buildroot}

%if 0%{?suse_version}
%suse_update_desktop_file wine
%endif

# find the implicit dependencies
%define winedir %_builddir/%prjname-%realver/
cat >%winedir/my-find-requires.sh <<EOF
#!/bin/bash
%{__find_requires}
%ifarch x86_64
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

%clean
rm -rf %{buildroot}

%post   -p /sbin/ldconfig
%postun -p /sbin/ldconfig

%files
%defattr(-,root,root)
%if 0%{?changedprefix}
%dir %_prefix
%dir %_bindir
%dir %_libdir
%dir %_mandir
%dir %_mandir/man1
%dir %_mandir/de
%dir %_mandir/de/man1
%dir %_mandir/fr
%dir %_mandir/fr/man1
%dir %_datadir
%dir %_datadir/applications
%dir %_datadir/icons
%dir %_defaultdocdir
%endif
%doc ANNOUNCE* AUTHORS LICENSE LICENSE.OLD README*
%{_bindir}/function_grep.pl
%{_bindir}/msiexec
%{_bindir}/msidb
%{_bindir}/notepad
%{_bindir}/regedit
%{_bindir}/regsvr32
%{_bindir}/wineboot
%{_bindir}/winecfg
%{_bindir}/wineconsole
%{_bindir}/winedbg
%{_bindir}/winefile
%{_bindir}/winemine
%{_bindir}/winepath
%{_bindir}/wineserver
%{_datadir}/wine
%{_datadir}/applications/wine.desktop
%ifnarch x86_64
%dir %doc %{_mandir}/pl
%dir %doc %{_mandir}/pl/man1
%doc %{_mandir}/man1/wine.1*
%endif
%doc %{_mandir}/man1/winedbg.1*
%doc %{_mandir}/man1/wineserver.1*
%ifnarch x86_64
%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
%if ! 0%{?changedprefix}
%config %{_sysconfdir}/xdg/menus/applications-merged/*.menu
%endif
%{_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 aarch64
%{_bindir}/wine
%{_bindir}/wine-preloader
%endif
%ifarch ppc %arm
%{_bindir}/wine
%endif
%ifarch x86_64
%{_bindir}/wine64
%{_bindir}/wine64-preloader
%endif
%ifarch x86_64
%dir /usr/lib/wine/
%dir /usr/lib/wine/i386-windows
%dir /usr/lib/wine/i386-unix
%dir %{_libdir}/wine/x86_64-windows
%dir %{_libdir}/wine/x86_64-unix
%dir %{_libdir}/wine
/usr/%{_lib}/wine/i386-windows
/usr/%{_lib}/wine/i386-unix
%else
%dir %{_libdir}/wine
%dir %{_libdir}/wine/*-windows
%dir %{_libdir}/wine/*-unix
%endif

%{_libdir}/wine/*-windows/*.[b-z]*
%if 0%{?suse_version} < 1600
# only generated with mingw
%{_libdir}/wine/*-windows/*.a
%endif
%{_libdir}/wine/*-windows/*.ax
%{_libdir}/wine/*-windows/*.acm
#ifarch aarch64
#{_libdir}/wine/*-windows/st*
#endif
%{_libdir}/wine/*-unix/*.so*

%files devel
%defattr(-,root,root)
%if 0%{?changedprefix}
%dir %_includedir
%endif
%{_includedir}/wine
%{_bindir}/widl
%{_bindir}/winebuild
%{_bindir}/winecpp
%{_bindir}/winedump
%{_bindir}/wineg++
%{_bindir}/winegcc
%{_bindir}/winemaker
%{_bindir}/wmc
%{_bindir}/wrc
%ifnarch aarch64
%{_libdir}/wine/*-unix/*.a
%endif
%if 0%{?suse_version} >= 1550
%ifarch %{ix86} x86_64
%ifarch x86_64
%dir %{_libdir}/wine/x86_64-windows
%dir %{_libdir}/wine/x86_64-unix
%endif
# only generated with mingw
%{_libdir}/wine/*-windows/*.a
%endif
%endif
%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*
%ifarch x86_64
%files 32bit-build-deps
%defattr(-,root,root)
%doc LICENSE
%endif

%changelog
openSUSE Build Service is sponsored by