File steam.spec of Package steam

# spec file for package steam
# Copyright (c) 2020 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

Name:           steam
Release:        0
Summary:        Installer for Valve's digital software distribution service
# "Limited Installation License"
License:        SUSE-Freeware
Group:          Amusements/Games/Other
ExclusiveArch:  %{ix86} x86_64 
Source1:        com.steampowered.steam.metainfo.xml
Source2:        %{name}-streaming.xml
Source3:        51-these-are-not-joysticks-rm.rules
# Based on
Patch0:         steam-invoke_steamtricks.patch
# PATCH-FIX-OPENSUSE steam-path-fix.patch bnc#1025841
Patch1:         steam-path-fix.patch
# PATCH-FIX-OPENSUSE steam-makefile.patch based on RPMFusion patch.
Patch2:         steam-makefile.patch
# PATCH-FIX-OPENSUSE steam-no-icon-on-desktop.patch from RPMFusion
Patch3:         steam-no-icon-on-desktop.patch
Patch4:         gpu-offload.patch
BuildRequires:  hicolor-icon-theme
BuildRequires:  pkgconfig(shared-mime-info)
BuildRequires:  update-desktop-files
BuildRequires:  fdupes
BuildRequires:  pkgconfig(udev)
BuildRequires:  firewall-macros

# for Steam Hardware Survey
Recommends:     lsb-release

# dep_postfix macro is used to append "-32bit" to dependencies for x86_64 on openSUSE
%define dep_postfix %{nil}
%ifarch x86_64
  %define dep_postfix -32bit

Requires:       Mesa-libGL1%{dep_postfix}
%if 0%{?sle_version} >= 150300 || 0%{?suse_version} >= 1550
Requires:       Mesa-vulkan-device-select
Requires:       Mesa-vulkan-device-select%{dep_postfix}
Requires:       libvulkan1%{dep_postfix}
Requires:       libvulkan_intel%{dep_postfix}
Requires:       libvulkan_radeon%{dep_postfix}
Requires:       alsa%{dep_postfix} >= 1.0.23
Requires:       alsa-devel%{dep_postfix} >= 1.0.23
Requires:       dbus-1-glib%{dep_postfix}
Requires:       gtk2-engine-oxygen%{dep_postfix}
Requires:       libSDL-1_2-0%{dep_postfix} >= 1.2.10
Requires:       libX11-6%{dep_postfix} >=
Requires:       libXdmcp6%{dep_postfix}
Requires:       libXext6%{dep_postfix}
Requires:       libXfixes3%{dep_postfix}
Requires:       libXi6%{dep_postfix} >=
Requires:       libXrandr2%{dep_postfix} >=
Requires:       libXrender1%{dep_postfix}
Requires:       libatk-1_0-0%{dep_postfix}
Requires:       libcairo2%{dep_postfix} >= 1.6.0
Requires:       libcurl4%{dep_postfix} >= 7.16.2-1
Requires:       libdbus-1-3%{dep_postfix} >= 1.2.14
Requires:       libfreetype6%{dep_postfix} >= 2.3.9
%if 0%{?suse_version} >= 1315
Requires:       libgcrypt20%{dep_postfix} >= 1.6.1
Requires:       libgcrypt11%{dep_postfix} >= 1.4.5
Requires:       libgdk_pixbuf-2_0-0%{dep_postfix} >= 2.22.0
Requires:       libglib-2_0-0%{dep_postfix} >= 2.14.0
Requires:       libgmodule-2_0-0%{dep_postfix}
Requires:       libgobject-2_0-0%{dep_postfix}
Requires:       libgtk-2_0-0%{dep_postfix} >= 2.24.0
Requires:       libogg0%{dep_postfix} >= 1.0
Requires:       libpango-1_0-0%{dep_postfix} >= 1.22.0
Requires:       libpixman-1-0%{dep_postfix} >= 0.24.4
Requires:       libpng12-0%{dep_postfix} >= 1.2.13
Requires:       libpulse0%{dep_postfix} >= 0.99.1
Requires:       libtheora0%{dep_postfix} >= 1.0
Requires:       libvorbis0%{dep_postfix} >= 1.1.2
Requires:       mozilla-nspr%{dep_postfix} >=
Requires:       mozilla-nss%{dep_postfix} >= 3.12.3
%if 0%{?suse_version} < 1330
Requires:       cups-libs%{dep_postfix} >= 1.4.0
Requires:       libcups2%{dep_postfix}
Requires:       fontconfig%{dep_postfix} >= 2.8.0
Requires:       glibc%{dep_postfix} >= 2.15
Requires:       openal-soft >= 1.13
Requires:       zlib%{dep_postfix} >=
Requires:       libgcc_s1%{dep_postfix} >= 4.1.1
Requires:       libopenal1%{dep_postfix} >= 1.13
Requires:       libstdc++6%{dep_postfix} >= 4.6

# our own builds of and
Requires:	libopenssl1_0_0-steam
Requires:	libopenssl1_0_0-steam%{dep_postfix}

# from steamdeps.txt which uses Debian package syntax
Requires:       curl
Requires:       xz
Requires:       zenity
Requires:       libxcb-dri2-0%{dep_postfix}
Requires:       libxcb-glx0%{dep_postfix}
Recommends:     bubblewrap

# replaces steamruntime-fix and is required for steam to boot
Requires:       steamtricks

#Proton Requirements
Requires:		python3

Steam is a software distribution service with an online store, automated
installation, automatic updates, achievements, SteamCloud synchronized
savegame and screenshot functionality, and many social features.

This package will fetch and install the Steam bootstrap. Start Steam to
complete the installation of the client for the current user.

%package        devices
Summary:        Device support for Steam-related hardware
License:        MIT
Group:          Hardware/Joystick
Obsoletes:      steam-controller < %{version}
Obsoletes:      steam-vr < %{version}
Provides:       steam-controller = %{version}
Provides:       steam-vr = %{version}
Supplements:    steam = %{version}
Requires:       steam = %{version}
%if 0%{?suse_version} >= 1330
Requires(pre):  group(games)
Requires(pre):  user(games)

%description devices
The Steam Controller features dual trackpads, HD haptic feedback, dual-stage
triggers, back grip buttons, and fully-customizable control schemes.
Make sure that all users, which should have access to the steam-controller,
are in the "games" group. Steam VR is a full-featured, 360° room-scale 
virtual reality experience.

%setup -q -n steam-launcher
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%if 0%{?suse_version} < 1550
%patch4 -p1



# TODO: Patch it so it works with zypper or at least does not invoke apt-get.
rm %{buildroot}%{_bindir}/steamdeps
rm %{buildroot}%{_prefix}/lib/steam/

mkdir -p %{buildroot}%{_udevrulesdir}
cp subprojects/steam-devices/60-steam-input.rules %{buildroot}%{_udevrulesdir}/60-steam-input.rules
cp subprojects/steam-devices/60-steam-vr.rules %{buildroot}%{_udevrulesdir}/60-steam-vr.rules
cp %{SOURCE3} %{buildroot}%{_udevrulesdir}/51-these-are-not-joysticks-rm.rules

install -Dm0644 %{SOURCE1} %{buildroot}%{_datadir}/metainfo/com.steampowered.steam.metainfo.xml

%if 0%{?suse_version} < 1550 && 0%{?sle_version} < 150300
install -Dm644 %{SOURCE2} %{buildroot}%{_prefix}/lib/firewalld/services/steam-streaming.xml
%fdupes %{buildroot}%{_prefix}

%if 0%{?suse_version} < 1550 && 0%{?sle_version} < 150300

%dir %{_prefix}/lib/%{name}
%dir %{_datadir}/doc/%{name}
%doc %{_datadir}/doc/%{name}/steam_subscriber_agreement.txt
%doc %{_datadir}/doc/%{name}/README
%doc debian/changelog
%dir %{_datadir}/metainfo/
%if 0%{?suse_version} < 1550 && 0%{?sle_version} < 150300
%dir %{_prefix}/lib/firewalld
%dir %{_prefix}/lib/firewalld/services

%files devices
%license subprojects/steam-devices/LICENSE

openSUSE Build Service is sponsored by