Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package steam for openSUSE:Factory:NonFree checked in at 2021-07-26 17:37:15 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory:NonFree/steam (Old) and /work/SRC/openSUSE:Factory:NonFree/.steam.new.1899 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "steam" Mon Jul 26 17:37:15 2021 rev:38 rq:908165 version:1.0.0.71 Changes: -------- --- /work/SRC/openSUSE:Factory:NonFree/steam/steam.changes 2021-07-05 22:21:55.134214599 +0200 +++ /work/SRC/openSUSE:Factory:NonFree/.steam.new.1899/steam.changes 2021-07-26 17:37:16.134153770 +0200 @@ -1,0 +2,14 @@ +Sun Jul 25 11:39:09 UTC 2021 - Callum Farmer <gm...@opensuse.org> + +- Update to version 1.0.0.71 + * Build using updated Steam client: + - Client timestamp 1626824053 (2021-07-20) + - Steam Runtime version 0.20210630.0 + * Update steam-devices subproject up to 2021-06-10 + - PDP Wired Fight Pad Pro for Nintendo Switch + - Razer Raiju 2 Tournament Edition (USB) + - Horipad mini 4 +- Remove steam-no-icon-on-desktop.patch: unneeded +- Remove steam-makefile.patch: unneeded + +------------------------------------------------------------------- Old: ---- com.steampowered.steam.metainfo.xml steam-makefile.patch steam-no-icon-on-desktop.patch steam_1.0.0.70.tar.gz New: ---- steam_1.0.0.71.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ steam.spec ++++++ --- /var/tmp/diff_new_pack.WxKXs3/_old 2021-07-26 17:37:17.058152660 +0200 +++ /var/tmp/diff_new_pack.WxKXs3/_new 2021-07-26 17:37:17.062152655 +0200 @@ -1,7 +1,7 @@ # # spec file for package steam # -# Copyright (c) 2020 SUSE LLC +# 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 @@ -16,119 +16,105 @@ # +%define dependency() \ +%ifarch %{ix86} \ +Requires: %{1} \ +%else \ +Requires: %{1}-32bit \ +%endif \ +%{nil} +%define booldependency() \ +%ifarch x86_64 \ +Requires: (%{1}-32bit if %{1}) \ +%endif \ +%{nil} Name: steam -Version: 1.0.0.70 +Version: 1.0.0.71 Release: 0 Summary: Installer for Valve's digital software distribution service # "Limited Installation License" License: SUSE-Freeware Group: Amusements/Games/Other -URL: http://www.steampowered.com/ -Source: https://repo.steampowered.com/steam/pool/steam/s/steam/steam_%{version}.tar.gz -ExclusiveArch: %{ix86} x86_64 -Source1: com.steampowered.steam.metainfo.xml +URL: https://www.steampowered.com/ +Source0: https://repo.steampowered.com/steam/pool/steam/s/steam/steam_%{version}.tar.gz Source2: %{name}-streaming.xml Source3: 51-these-are-not-joysticks-rm.rules # Based on https://raw.githubusercontent.com/steamtricks/steamtricks/master/dist/patch/steam-invoke_steamtricks.patch 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 -Requires: 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 -%endif - -Recommends: Mesa-libGL1%{dep_postfix} -%if 0%{?sle_version} >= 150300 || 0%{?suse_version} >= 1550 -Recommends: Mesa-vulkan-device-select -Recommends: Mesa-vulkan-device-select%{dep_postfix} -%endif -Recommends: libvulkan1%{dep_postfix} -Recommends: libvulkan_intel%{dep_postfix} -Recommends: 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} >= 1.4.99.1 -Requires: libXdmcp6%{dep_postfix} -Requires: libXext6%{dep_postfix} -Requires: libXfixes3%{dep_postfix} -Requires: libXi6%{dep_postfix} >= 1.2.99.4 -Requires: libXrandr2%{dep_postfix} >= 1.2.99.3 -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 -%else -Requires: libgcrypt11%{dep_postfix} >= 1.4.5 -%endif -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} >= 1.8.0.10 -Requires: mozilla-nss%{dep_postfix} >= 3.12.3 -%if 0%{?suse_version} < 1330 -Requires: cups-libs%{dep_postfix} >= 1.4.0 -%else -Requires: libcups2%{dep_postfix} -%endif -Requires: fontconfig%{dep_postfix} >= 2.8.0 -Requires: glibc%{dep_postfix} >= 2.15 -Requires: openal-soft >= 1.13 -Requires: zlib%{dep_postfix} >= 1.2.3.3 -Requires: libgcc_s1%{dep_postfix} >= 4.1.1 -Requires: libopenal1%{dep_postfix} >= 1.13 -Requires: libstdc++6%{dep_postfix} >= 4.6 -Requires: glibc-locale-base%{dep_postfix} - -# our own builds of libcrypto.so.1 and libssl.so.1. -Requires: libopenssl1_0_0-steam -Requires: libopenssl1_0_0-steam%{dep_postfix} - +BuildRequires: hicolor-icon-theme +BuildRequires: pkgconfig +BuildRequires: update-desktop-files # from steamdeps.txt which uses Debian package syntax Requires: curl +# our own builds of libcrypto.so.1 and libssl.so.1. +Requires: libopenssl1_0_0-steam +# for Steam Hardware Survey +Requires: lsb-release +#Proton Requirements +Requires: python3 Requires: xz Requires: zenity -Requires: libxcb-dri2-0%{dep_postfix} -Requires: libxcb-glx0%{dep_postfix} +Requires: openal-soft Recommends: bubblewrap - # replaces steamruntime-fix and is required for steam to boot Recommends: steamtricks - -#Proton Requirements -Requires: python3 +ExclusiveArch: %{ix86} x86_64 +%booldependency Mesa-libGL1 +%booldependency libvulkan_intel +%booldependency libvulkan_radeon +%dependency libvulkan1 +%dependency libasound2 +%dependency alsa-devel +%dependency dbus-1-glib +%dependency gtk2-engine-oxygen +%dependency libSDL-1_2-0 +%dependency libX11-6 +%dependency libXdmcp6 +%dependency libXext6 +%dependency libXfixes3 +%dependency libXi6 +%dependency libXrandr2 +%dependency libXrender1 +%dependency libatk-1_0-0 +%dependency libcairo2 +%dependency libcurl4 +%dependency libdbus-1-3 +%dependency libfreetype6 +%dependency libgcrypt20 +%dependency libgdk_pixbuf-2_0-0 +%dependency libglib-2_0-0 +%dependency libgmodule-2_0-0 +%dependency libgobject-2_0-0 +%dependency libgtk-2_0-0 +%dependency libogg0 +%dependency libpango-1_0-0 +%dependency libpixman-1-0 +%dependency libpng12-0 +%dependency libpulse0 +%dependency libtheora0 +%dependency libvorbis0 +%dependency mozilla-nspr +%dependency mozilla-nss +%dependency libcups2 +%dependency fontconfig +%dependency glibc +%dependency libz1 +%dependency libgcc_s1 +%dependency libopenal1 +%dependency libstdc++6 +%dependency glibc-locale-base +%dependency libudev1 +%dependency libxcb-dri2-0 +%dependency libxcb-glx0 +%dependency libdrm2 +%ifarch x86_64 +Requires: libopenssl1_0_0-steam-32bit +%endif %description Steam is a software distribution service with an online store, automated @@ -140,15 +126,15 @@ %package devices Summary: Device support for Steam-related hardware -URL: https://github.com/ValveSoftware/steam-devices/ License: MIT Group: Hardware/Joystick +URL: https://github.com/ValveSoftware/steam-devices/ +Requires: steam = %{version} +Supplements: steam = %{version} 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) @@ -161,39 +147,30 @@ are in the "games" group. Steam VR is a full-featured, 360?? room-scale virtual reality experience. - %prep %setup -q -n steam-launcher %patch0 -p1 %patch1 -p1 -%patch2 -p1 -%patch3 -p1 %if 0%{?suse_version} < 1550 %patch4 -p1 %endif %build +true %install -%make_install - -# 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/bin_steamdeps.py +make DESTDIR=%{buildroot} install-bin install-docs install-icons install-bootstrap install-desktop install-appdata mkdir -p %{buildroot}%{_udevrulesdir} install -Dm0644 subprojects/steam-devices/60-steam-input.rules %{buildroot}%{_udevrulesdir}/60-steam-input.rules install -Dm0644 subprojects/steam-devices/60-steam-vr.rules %{buildroot}%{_udevrulesdir}/60-steam-vr.rules install -Dm0644 %{SOURCE3} %{buildroot}%{_udevrulesdir}/51-these-are-not-joysticks-rm.rules - -# https://en.opensuse.org/openSUSE:AppStore -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 +install -Dm0644 %{SOURCE2} %{buildroot}%{_prefix}/lib/firewalld/services/steam-streaming.xml %endif -%fdupes %{buildroot}%{_prefix} + +%fdupes -s %{buildroot} %if 0%{?suse_version} < 1550 && 0%{?sle_version} < 150300 %post @@ -201,9 +178,8 @@ %endif %files -%{_bindir}/%{name} -%dir %{_prefix}/lib/%{name} -%{_prefix}/lib/%{name}/bootstraplinux_ubuntu12_32.tar.xz +%{_bindir}/* +%{_prefix}/lib/%{name} %{_datadir}/pixmaps/%{name}_tray_mono.png %{_datadir}/pixmaps/%{name}.png %{_datadir}/applications/%{name}.desktop @@ -213,8 +189,7 @@ %doc %{_datadir}/doc/%{name}/README %doc debian/changelog %{_mandir}/man6/%{name}.6%{?ext_man} -%dir %{_datadir}/metainfo/ -%{_datadir}/metainfo/com.steampowered.steam.metainfo.xml +%{_datadir}/metainfo/* %if 0%{?suse_version} < 1550 && 0%{?sle_version} < 150300 %dir %{_prefix}/lib/firewalld %dir %{_prefix}/lib/firewalld/services ++++++ steam_1.0.0.70.tar.gz -> steam_1.0.0.71.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/steam-launcher/Makefile new/steam-launcher/Makefile --- old/steam-launcher/Makefile 2021-04-07 14:33:15.000000000 +0200 +++ new/steam-launcher/Makefile 2021-07-23 17:32:58.000000000 +0200 @@ -3,7 +3,7 @@ all: @echo 'Run steam with "./steam" or install it with "sudo make install"' -install: install-bin install-docs install-icons install-bootstrap install-desktop install-apt-source +install: install-bin install-docs install-icons install-bootstrap install-desktop install-appdata install-apt-source install-bin: install -d -m 755 $(DESTDIR)$(PREFIX)/bin/ @@ -41,8 +41,16 @@ install-desktop: install -d -m 755 $(DESTDIR)$(PREFIX)/share/applications/ install -d -m 755 $(DESTDIR)$(pkglibdir)/ - install -p -m 644 $(PACKAGE).desktop $(DESTDIR)$(pkglibdir) - ln -fns $(pkglibdir)/$(PACKAGE).desktop $(DESTDIR)$(datadir)/applications/ + # If we create a desktop symlink in $(datadir)/applications/, the md5sum deb file + # will not contain an entry for it and appstream-generator will complain that + # the package is missing the desktop file. Instead we place the real file in + # $(datadir)/applications/ and create a symlink in $(pkglibdir) + install -p -m 644 $(PACKAGE).desktop $(DESTDIR)$(datadir)/applications/ + ln -fns $(datadir)/applications/$(PACKAGE).desktop $(DESTDIR)$(pkglibdir)/ + +install-appdata: + install -d -m 755 $(DESTDIR)$(PREFIX)/share/metainfo/ + install -p -m 644 $(PACKAGE_ID).metainfo.xml $(DESTDIR)$(PREFIX)/share/metainfo/ install-apt-source: if [ -d /etc/apt ]; then \ @@ -55,13 +63,14 @@ ######################### PACKAGE=steam +PACKAGE_ID=com.valvesoftware.Steam PREFIX?=/usr bindir = $(PREFIX)/bin datadir = $(PREFIX)/share pkglibdir = $(PREFIX)/lib/$(PACKAGE) PYTHON ?= python3 -.PHONY: all install install-bin install-docs install-icons install-bootstrap install-desktop install-apt-source +.PHONY: all install install-bin install-docs install-icons install-bootstrap install-desktop install-appdata install-apt-source check: prove -v tests/*.sh diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/steam-launcher/bin_steam.sh new/steam-launcher/bin_steam.sh --- old/steam-launcher/bin_steam.sh 2021-04-07 14:33:15.000000000 +0200 +++ new/steam-launcher/bin_steam.sh 2021-07-23 17:32:58.000000000 +0200 @@ -14,7 +14,7 @@ bootstrapscript="$(readlink -f "$STEAMSCRIPT")" bootstrapdir="$(dirname "$bootstrapscript")" -export STEAMSCRIPT_VERSION=1.0.0.70 +export STEAMSCRIPT_VERSION=1.0.0.71 # Set up domain for script localization export TEXTDOMAIN=steam diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/steam-launcher/bin_steamdeps.py new/steam-launcher/bin_steamdeps.py --- old/steam-launcher/bin_steamdeps.py 2021-04-07 14:33:15.000000000 +0200 +++ new/steam-launcher/bin_steamdeps.py 2021-07-23 17:32:58.000000000 +0200 @@ -567,6 +567,23 @@ packages[package.name] = package dependencies.append([package]) + # Try to install these packages, even if they are not + # listed in the steamdeps.txt file. If they are not available we + # just inform the user about it and continue. + for additional_pkg in ( + 'steam-libs-amd64:amd64', + 'steam-libs-i386:i386', + 'xdg-desktop-portal', + choose_xdg_portal_backend() or 'xdg-desktop-portal-gtk', + ): + if additional_pkg not in packages: + if is_package_available(additional_pkg): + package = Package(additional_pkg, []) + packages[package.name] = package + dependencies.append([package]) + else: + missing_packages.append(additional_pkg) + # The Steam container runtime (pressure-vessel) requires a setuid # bubblewrap executable on some kernel configurations. Steam is # unprivileged, so we have to get it from the host OS. @@ -584,26 +601,6 @@ packages[package.name] = package dependencies.append([package]) - # Try to install xdg-desktop-portal and a backend, even if they are - # not listed in the steamdeps.txt file. If they are not available we - # just inform the user about it and continue. - xdg_portal = 'xdg-desktop-portal' - if xdg_portal not in packages: - if is_package_available(xdg_portal): - package = Package(xdg_portal, []) - packages[package.name] = package - dependencies.append([package]) - else: - missing_packages.append(xdg_portal) - - xdg_backend = choose_xdg_portal_backend() - if xdg_backend is not None and xdg_backend not in packages: - package = Package(xdg_backend, []) - packages[package.name] = package - dependencies.append([package]) - else: - missing_packages.append(xdg_backend or 'xdg-desktop-portal-gtk') - if missing_packages: print("These packages are not available:\n") Binary files old/steam-launcher/bootstraplinux_ubuntu12_32.tar.xz and new/steam-launcher/bootstraplinux_ubuntu12_32.tar.xz differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/steam-launcher/client-versions.json new/steam-launcher/client-versions.json --- old/steam-launcher/client-versions.json 2021-04-07 14:33:49.000000000 +0200 +++ new/steam-launcher/client-versions.json 2021-07-23 17:33:29.000000000 +0200 @@ -1,4 +1,4 @@ { - "client_version": "1616532526", - "runtime_version": "0.20210126.2" + "client_version": "1626824053", + "runtime_version": "0.20210630.0" } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/steam-launcher/com.valvesoftware.Steam.metainfo.xml new/steam-launcher/com.valvesoftware.Steam.metainfo.xml --- old/steam-launcher/com.valvesoftware.Steam.metainfo.xml 1970-01-01 01:00:00.000000000 +0100 +++ new/steam-launcher/com.valvesoftware.Steam.metainfo.xml 2021-07-23 17:32:58.000000000 +0200 @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Copyright 2017 Cosimo Cecchi --> +<!-- Copyright 2021 Collabora Ltd. --> +<component type="desktop-application"> + <id>com.valvesoftware.Steam.desktop</id> + <metadata_license>CC0-1.0</metadata_license> + <name>Steam</name> + <summary>Launcher for the Steam software distribution service</summary> + <description> + <p>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.</p> + </description> + <categories> + <category>Game</category> + <category>PackageManager</category> + </categories> + <url type="homepage">https://store.steampowered.com</url> + <url type="bugtracker">https://github.com/ValveSoftware/steam-for-linux/issues</url> + <project_license>LicenseRef-proprietary</project_license> + <developer_name>Valve Corporation</developer_name> + <screenshots> + <screenshot> + <image type="source" width="1200" height="1026">https://steamcdn-a.akamaihd.net/steamcommunity/public/images/clans/27766192/27b935179076c418c2f62f9440aba9c06161e4c0.jpg</image> + </screenshot> + <screenshot type="default"> + <image type="source" width="1200" height="582">https://steamcdn-a.akamaihd.net/steamcommunity/public/images/clans/27766192/ac26dea63042eec4886d5fa27854517ce374b11e.jpg</image> + </screenshot> + <screenshot> + <image type="source" width="1200" height="535">https://steamcdn-a.akamaihd.net/steamcommunity/public/images/clans/27766192/563daff788965a9f0aa4525190ef12d8c10832d6.jpg</image> + </screenshot> + </screenshots> + <launchable type="desktop-id">steam.desktop</launchable> + <releases> + <release version="1.0.0.71" date="2021-07-23"/> + <release version="1.0.0.70" date="2021-04-07"/> + </releases> +</component> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/steam-launcher/debian/.gitignore new/steam-launcher/debian/.gitignore --- old/steam-launcher/debian/.gitignore 2021-04-07 14:33:15.000000000 +0200 +++ new/steam-launcher/debian/.gitignore 2021-07-23 17:32:58.000000000 +0200 @@ -3,6 +3,8 @@ /*.log /*.substvars /files -/steam/ /steam-launcher/ +/steam-libs-amd64/ +/steam-libs-i386/ +/steam/ /tmp/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/steam-launcher/debian/README.source new/steam-launcher/debian/README.source --- old/steam-launcher/debian/README.source 2021-04-07 14:33:15.000000000 +0200 +++ new/steam-launcher/debian/README.source 2021-07-23 17:32:58.000000000 +0200 @@ -97,6 +97,9 @@ * Check that `STEAMSCRIPT_VERSION` in `bin_steam.sh` is correct +* Add a `<release>` in `com.valvesoftware.Steam.metainfo.xml`, preserving + newest-first order + * Commit the changes * `git tag -m 'steam-launcher vX.Y.Z.W' -a vX.Y.Z.W` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/steam-launcher/debian/changelog new/steam-launcher/debian/changelog --- old/steam-launcher/debian/changelog 2021-04-07 14:33:15.000000000 +0200 +++ new/steam-launcher/debian/changelog 2021-07-23 17:32:58.000000000 +0200 @@ -1,3 +1,31 @@ +steam (1:1.0.0.71) beta; urgency=medium + + [ Ludovico de Nittis ] + * d/control: Add steamrt-libs-amd64, steamrt-libs-i386 metapackages. + These pull in libraries required by steam-launcher and Steam itself. + Note that although these should ideally be hard dependencies, we cannot + enforce this at the packaging level, because that would break the + ability to download "steam-launcher.deb" through a browser and install + it with "gdebi" or similar, which is a documented use-case. + * bin_steamdeps: Try to install the new steam-libs metapackages + + [ Simon McVittie ] + * d/control: Depend on realpath. + steam.sh assumes realpath(1) is available, but in older distributions + such as Ubuntu 14.04 that isn't necessarily present. + * Build using updated Steam client: + - Client timestamp 1626824053 (2021-07-20) + - Steam Runtime version 0.20210630.0 + * Update steam-devices subproject up to 2021-06-10 + - PDP Wired Fight Pad Pro for Nintendo Switch + (thanks, @theGiallo) (Resolves: steam-devices#19) + - Razer Raiju 2 Tournament Edition (USB) + (thanks, @dsuserds) (Resolves: steam-devices#20) + - Horipad mini 4 (thanks, @besselfunct) (Resolves: steam-devices#21) + * Update python-vdf subproject to v3.4 + + -- Simon McVittie <s...@collabora.com> Fri, 23 Jul 2021 16:27:40 +0100 + steam (1:1.0.0.70) beta; urgency=medium * steam.desktop: Request running on a discrete or otherwise "big" GPU diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/steam-launcher/debian/control new/steam-launcher/debian/control --- old/steam-launcher/debian/control 2021-04-07 14:33:15.000000000 +0200 +++ new/steam-launcher/debian/control 2021-07-23 17:32:58.000000000 +0200 @@ -18,6 +18,7 @@ ${python3:Depends}, apt (>= 1.6) | apt-transport-https, ca-certificates, + coreutils (>= 8.23-1~) | realpath, curl, file, libc6 (>= 2.15), @@ -27,7 +28,9 @@ xterm | gnome-terminal | konsole | x-terminal-emulator, xz-utils, zenity -Recommends: sudo, +Recommends: steam-libs-amd64, + steam-libs-i386, + sudo, xdg-utils | steamos-base-files, Description: Launcher for the Steam software distribution service Steam is a software distribution service with an online store, automated @@ -41,3 +44,50 @@ Depends: steam-launcher (>= ${source:Version}) Description: Launcher for the Steam software distribution service This is a transitional package that can be safely removed once steam-launcher is installed. + +Package: steam-libs-amd64 +Architecture: amd64 +Multi-Arch: foreign +Depends: libc6 (>= 2.15), + libnss3 (>= 2:3.26), + libgl1, + libgl1-mesa-dri, + libgcc-s1 | libgcc1, + libgpg-error0 (>= 1.10), + libstdc++6, + libudev1 | libudev0, + libxcb-dri3-0, + libxcb1, + libxinerama1 (>= 2:1.1.1), + libx11-6, +Recommends: libasound2-plugins, + libxss1, + mesa-vulkan-drivers, +Suggests: nvidia-driver-libs, + nvidia-vulkan-icd, +Description: Steam libraries metapackage + This metapackage depends on the amd64 libraries required by + steam-launcher. + +Package: steam-libs-i386 +Architecture: i386 +Multi-Arch: foreign +Depends: libc6 (>= 2.15), + libgl1, + libgl1-mesa-dri, + libgcc-s1 | libgcc1, + libgpg-error0 (>= 1.10), + libstdc++6, + libudev1 | libudev0, + libxcb-dri3-0, + libxcb1, + libxinerama1 (>= 2:1.1.1), + libx11-6, +Recommends: libasound2-plugins, + libxss1, + mesa-vulkan-drivers, +Suggests: nvidia-driver-libs, + nvidia-vulkan-icd, +Description: Steam libraries metapackage + This metapackage depends on the i386 libraries required by + steam-launcher. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/steam-launcher/subprojects/python-vdf/.coveragerc new/steam-launcher/subprojects/python-vdf/.coveragerc --- old/steam-launcher/subprojects/python-vdf/.coveragerc 1970-01-01 01:00:00.000000000 +0100 +++ new/steam-launcher/subprojects/python-vdf/.coveragerc 2021-07-23 17:32:58.000000000 +0200 @@ -0,0 +1,9 @@ + +# Docs: https://coverage.readthedocs.org/en/latest/config.html + +[run] +branch = False + +# If True, stores relative file paths in data file (needed for Github Actions). +# Using this parameter requires coverage>=5.0 +relative_files = True diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/steam-launcher/subprojects/python-vdf/.github/workflows/testing.yml new/steam-launcher/subprojects/python-vdf/.github/workflows/testing.yml --- old/steam-launcher/subprojects/python-vdf/.github/workflows/testing.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/steam-launcher/subprojects/python-vdf/.github/workflows/testing.yml 2021-07-23 17:32:58.000000000 +0200 @@ -0,0 +1,77 @@ +name: Tests + +on: + push: + branches: [ master ] + paths-ignore: + - '.gitignore' + - '*.md' + - '*.rst' + - 'LICENSE' + - 'requirements.txt' + - 'vdf2json/**' + pull_request: + branches: [ master ] + paths-ignore: + - '.gitignore' + - '*.md' + - '*.rst' + - 'LICENSE' + - 'requirements.txt' + - 'vdf2json/**' + +jobs: + test: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + python-version: [2.7, 3.5, 3.6, 3.7, 3.8, 3.9] + no-coverage: [0] + include: + - os: ubuntu-latest + python-version: pypy-2.7 + no-coverage: 1 + - os: ubuntu-latest + python-version: pypy-3.6 + no-coverage: 1 + steps: + - uses: actions/checkout@v2 + - name: Set up Python Env + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + - name: Display Python version + run: python -c "import sys; print(sys.version)" + - name: Install dependencies + run: | + make init + - name: Run Tests + env: + NOCOV: ${{ matrix.no-coverage }} + run: | + make test + - name: Upload to Coveralls + # pypy + concurrenct=gevent not supported in coveragepy. See https://github.com/nedbat/coveragepy/issues/560 + if: matrix.no-coverage == 0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + COVERALLS_PARALLEL: true + COVERALLS_FLAG_NAME: "${{ matrix.os }}_${{ matrix.python-version }}" + run: | + coveralls --service=github + + coveralls: + name: Finish Coveralls + needs: test + runs-on: ubuntu-latest + container: python:3-slim + steps: + - name: Install coveralls + run: | + pip3 install --upgrade coveralls + - name: Send coverage finish to coveralls.io + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + coveralls --finish diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/steam-launcher/subprojects/python-vdf/.scrutinizer.yml new/steam-launcher/subprojects/python-vdf/.scrutinizer.yml --- old/steam-launcher/subprojects/python-vdf/.scrutinizer.yml 2021-04-07 14:33:15.000000000 +0200 +++ new/steam-launcher/subprojects/python-vdf/.scrutinizer.yml 1970-01-01 01:00:00.000000000 +0100 @@ -1,17 +0,0 @@ -filter: - excluded_paths: - - 'tests/*' - - 'vdf2json/*' -tools: - external_code_coverage: - timeout: 200 - runs: 8 - -build: - nodes: - analysis: - tests: - override: - - command: py-scrutinizer-run - idle_timeout: 300 - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/steam-launcher/subprojects/python-vdf/.travis.yml new/steam-launcher/subprojects/python-vdf/.travis.yml --- old/steam-launcher/subprojects/python-vdf/.travis.yml 2021-04-07 14:33:15.000000000 +0200 +++ new/steam-launcher/subprojects/python-vdf/.travis.yml 1970-01-01 01:00:00.000000000 +0100 @@ -1,24 +0,0 @@ -language: python -os: linux - -jobs: - include: - - python: 2.7 - - python: 3.4 - - python: 3.5 - - python: 3.6 - - python: 3.7 - - python: 3.8 - - python: "pypy" - - python: "pypy3" -install: - - pip install -r requirements.txt - - pip install coveralls - - pip install scrutinizer-ocular -before_script: - - rm -f .coverage vdf/*.pyc tests/*.pyc -script: - - PYTHONHASHSEED=0 python -m pytest --cov=vdf tests -after_success: - - coveralls - - ocular --data-file ".coverage" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/steam-launcher/subprojects/python-vdf/Makefile new/steam-launcher/subprojects/python-vdf/Makefile --- old/steam-launcher/subprojects/python-vdf/Makefile 2021-04-07 14:33:15.000000000 +0200 +++ new/steam-launcher/subprojects/python-vdf/Makefile 2021-07-23 17:32:58.000000000 +0200 @@ -16,11 +16,17 @@ @echo "$$HELPBODY" init: - pip install -r requirements.txt + pip install -r dev_requirements.txt + +COVOPTS = --cov-config .coveragerc --cov=vdf + +ifeq ($(NOCOV), 1) + COVOPTS = +endif test: rm -f .coverage vdf/*.pyc tests/*.pyc - PYTHONHASHSEED=0 python -m pytest --cov=vdf tests + PYTHONHASHSEED=0 pytest --tb=short $(COVOPTS) tests pylint: pylint -r n -f colorized vdf || true diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/steam-launcher/subprojects/python-vdf/README.rst new/steam-launcher/subprojects/python-vdf/README.rst --- old/steam-launcher/subprojects/python-vdf/README.rst 2021-04-07 14:33:15.000000000 +0200 +++ new/steam-launcher/subprojects/python-vdf/README.rst 2021-07-23 17:32:58.000000000 +0200 @@ -1,8 +1,9 @@ -|pypi| |license| |coverage| |scru| |master_build| +| |pypi| |license| |coverage| |master_build| +| |sonar_maintainability| |sonar_reliability| |sonar_security| Pure python module for (de)serialization to and from VDF that works just like ``json``. -Tested and works on ``python2.7``, ``python3.3+``, ``pypy`` and ``pypy3``. +Tested and works on ``py2.7``, ``py3.3+``, ``pypy`` and ``pypy3``. VDF is Valve's KeyValue text file format @@ -35,8 +36,8 @@ that can be used as mapper instead of ``dict``. See the example section for details. - By default de-serialization will return a ``dict``, which doesn't preserve nor guarantee - key order due to `hash randomization`_. If key order is important then - I suggest using ``collections.OrderedDict``, or ``vdf.VDFDict``. + key order on Python versions prior to 3.6, due to `hash randomization`_. If key order is + important on old Pythons, I suggest using ``collections.OrderedDict``, or ``vdf.VDFDict``. Example usage ------------- @@ -146,12 +147,20 @@ :target: https://coveralls.io/r/ValvePython/vdf?branch=master :alt: Test coverage -.. |scru| image:: https://scrutinizer-ci.com/g/ValvePython/vdf/badges/quality-score.png?b=master - :target: https://scrutinizer-ci.com/g/ValvePython/vdf/?branch=master - :alt: Scrutinizer score +.. |sonar_maintainability| image:: https://sonarcloud.io/api/project_badges/measure?project=ValvePython_vdf&metric=sqale_rating + :target: https://sonarcloud.io/dashboard?id=ValvePython_vdf + :alt: SonarCloud Rating + +.. |sonar_reliability| image:: https://sonarcloud.io/api/project_badges/measure?project=ValvePython_vdf&metric=reliability_rating + :target: https://sonarcloud.io/dashboard?id=ValvePython_vdf + :alt: SonarCloud Rating + +.. |sonar_security| image:: https://sonarcloud.io/api/project_badges/measure?project=ValvePython_vdf&metric=security_rating + :target: https://sonarcloud.io/dashboard?id=ValvePython_vdf + :alt: SonarCloud Rating -.. |master_build| image:: https://img.shields.io/travis/ValvePython/vdf/master.svg?style=flat&label=master%20build - :target: http://travis-ci.org/ValvePython/vdf +.. |master_build| image:: https://github.com/ValvePython/vdf/workflows/Tests/badge.svg?branch=master + :target: https://github.com/ValvePython/vdf/actions?query=workflow%3A%22Tests%22+branch%3Amaster :alt: Build status of master branch .. _DuplicateOrderedDict: https://github.com/rossengeorgiev/dota2_notebooks/blob/master/DuplicateOrderedDict_for_VDF.ipynb diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/steam-launcher/subprojects/python-vdf/dev_requirements.txt new/steam-launcher/subprojects/python-vdf/dev_requirements.txt --- old/steam-launcher/subprojects/python-vdf/dev_requirements.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/steam-launcher/subprojects/python-vdf/dev_requirements.txt 2021-07-23 17:32:58.000000000 +0200 @@ -0,0 +1,8 @@ +mock; python_version < '3.3' + +coverage>=5.0; python_version == '2.7' or python_version >= '3.5' +pytest-cov>=2.7.0; python_version == '2.7' or python_version >= '3.5' + +# coveralls 2.0 has removed support for Python 2.7 and 3.4 +git+https://github.com/andy-maier/coveralls-python.git@andy/add-py27#egg=coveralls; python_version == '2.7' +coveralls>=2.1.2; python_version >= '3.5' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/steam-launcher/subprojects/python-vdf/requirements.txt new/steam-launcher/subprojects/python-vdf/requirements.txt --- old/steam-launcher/subprojects/python-vdf/requirements.txt 2021-04-07 14:33:15.000000000 +0200 +++ new/steam-launcher/subprojects/python-vdf/requirements.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1,3 +0,0 @@ -mock -pytest -pytest-cov diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/steam-launcher/subprojects/python-vdf/setup.py new/steam-launcher/subprojects/python-vdf/setup.py --- old/steam-launcher/subprojects/python-vdf/setup.py 2021-04-07 14:33:15.000000000 +0200 +++ new/steam-launcher/subprojects/python-vdf/setup.py 2021-07-23 17:32:58.000000000 +0200 @@ -26,10 +26,12 @@ 'Natural Language :: English', 'Operating System :: OS Independent', 'Programming Language :: Python :: 2.7', - 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.3', 'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.5', + 'Programming Language :: Python :: 3.6', + 'Programming Language :: Python :: 3.7', + 'Programming Language :: Python :: 3.8', + 'Programming Language :: Python :: 3.9', 'Programming Language :: Python :: Implementation :: PyPy', ], keywords='valve keyvalue vdf tf2 dota2 csgo', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/steam-launcher/subprojects/python-vdf/tests/test_vdf.py new/steam-launcher/subprojects/python-vdf/tests/test_vdf.py --- old/steam-launcher/subprojects/python-vdf/tests/test_vdf.py 2021-04-07 14:33:15.000000000 +0200 +++ new/steam-launcher/subprojects/python-vdf/tests/test_vdf.py 2021-07-23 17:32:58.000000000 +0200 @@ -1,8 +1,12 @@ import unittest -import mock import sys try: + from unittest import mock +except ImportError: + import mock + +try: from StringIO import StringIO except ImportError: from io import StringIO @@ -124,7 +128,7 @@ result = vdf.loads(vdf.BOMS + '"asd" "123"') self.assertEqual(result, {'asd': '123'}) - if sys.version_info[0] is 2: + if sys.version_info[0] == 2: result = vdf.loads(vdf.BOMS_UNICODE + '"asd" "123"') self.assertEqual(result, {'asd': '123'}) @@ -319,16 +323,27 @@ self.assertEqual(vdf.loads(INPUT, escaped=False), EXPECTED) def test_wierd_symbols_for_unquoted(self): - INPUT = 'a asd.vdf\nb language_*lol*\nc zxc_-*.sss//' + INPUT = 'a asd.vdf\nb language_*lol*\nc zxc_-*.sss//\nd<2?$% /cde/$fgh/<i>' EXPECTED = { 'a': 'asd.vdf', 'b': 'language_*lol*', 'c': 'zxc_-*.sss', + 'd<2?$%': '/cde/$fgh/<i>', } self.assertEqual(vdf.loads(INPUT), EXPECTED) self.assertEqual(vdf.loads(INPUT, escaped=False), EXPECTED) + def test_space_for_unquoted(self): + INPUT = 'a b c d \n efg h i\t // j k\n' + EXPECTED= { + 'a': 'b c d', + 'efg': 'h i', + } + + self.assertEqual(vdf.loads(INPUT), EXPECTED) + self.assertEqual(vdf.loads(INPUT, escaped=False), EXPECTED) + def test_merge_multiple_keys_on(self): INPUT = ''' a @@ -393,6 +408,101 @@ self.assertEqual(vdf.loads(INPUT, escaped=False), EXPECTED) + def test_single_line_empty_block(self): + INPUT = ''' + "root1" + { + "key1" {} + key2 "value2" + "key3" value3 + } + root2 { } + root3 + { + "key1" "value1" + key2 { } + "key3" value3 + } + ''' + + EXPECTED = { + 'root1': { + 'key1': {}, + 'key2': 'value2', + 'key3': 'value3', + }, + 'root2': {}, + 'root3': { + 'key1': 'value1', + 'key2': {}, + 'key3': 'value3', + } + } + + self.assertEqual(vdf.loads(INPUT), EXPECTED) + self.assertEqual(vdf.loads(INPUT, escaped=False), EXPECTED) + + def test_inline_opening_bracker(self): + INPUT = ''' + "root1" { + "key1" { + } + key2 "value2" + "key3" value3 + } + root2 { } + root3 { + "key1" "value1" + key2 { + + } + "key3" value3 + } + ''' + + EXPECTED = { + 'root1': { + 'key1': {}, + 'key2': 'value2', + 'key3': 'value3', + }, + 'root2': {}, + 'root3': { + 'key1': 'value1', + 'key2': {}, + 'key3': 'value3', + } + } + + self.assertEqual(vdf.loads(INPUT), EXPECTED) + self.assertEqual(vdf.loads(INPUT, escaped=False), EXPECTED) + + def test_duplicate_key_with_value_from_str_to_mapper(self): + INPUT = r''' + level1 + { + key1 text1 + key2 text2 + } + level1 + { + key2 + { + key3 text3 + } + } + ''' + + EXPECTED = { + "level1": { + "key1": "text1", + "key2": { + "key3": "text3" + } + } + } + + self.assertEqual(vdf.loads(INPUT), EXPECTED) class testcase_VDF_other(unittest.TestCase): def test_dumps_pretty_output(self): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/steam-launcher/subprojects/python-vdf/vdf/__init__.py new/steam-launcher/subprojects/python-vdf/vdf/__init__.py --- old/steam-launcher/subprojects/python-vdf/vdf/__init__.py 2021-04-07 14:33:15.000000000 +0200 +++ new/steam-launcher/subprojects/python-vdf/vdf/__init__.py 2021-07-23 17:32:58.000000000 +0200 @@ -1,7 +1,7 @@ """ Module for deserializing/serializing to and from VDF """ -__version__ = "3.3" +__version__ = "3.4" __author__ = "Rossen Georgiev" import re @@ -86,10 +86,11 @@ stack = [mapper()] expect_bracket = False - re_keyvalue = re.compile(r'^("(?P<qkey>(?:\\.|[^\\"])+)"|(?P<key>#?[a-z0-9\-\_\\\?]+))' + re_keyvalue = re.compile(r'^("(?P<qkey>(?:\\.|[^\\"])*)"|(?P<key>#?[a-z0-9\-\_\\\?$%<>]+))' r'([ \t]*(' r'"(?P<qval>(?:\\.|[^\\"])*)(?P<vq_end>")?' - r'|(?P<val>[a-z0-9\-\_\\\?\*\.]+)' + r'|(?P<val>(?:(?<!/)/(?!/)|[a-z0-9\-\_\\\?\*\.$<> ])+)' + r'|(?P<sblock>{[ \t]*)(?P<eblock>})?' r'))?', flags=re.I) @@ -134,7 +135,13 @@ (getattr(fp, 'name', '<%s>' % fp.__class__.__name__), lineno, 0, line)) key = match.group('key') if match.group('qkey') is None else match.group('qkey') - val = match.group('val') if match.group('qval') is None else match.group('qval') + val = match.group('qval') + if val is None: + val = match.group('val') + if val is not None: + val = val.rstrip() + if val == "": + val = None if escaped: key = _unescape(key) @@ -143,12 +150,18 @@ if val is None: if merge_duplicate_keys and key in stack[-1]: _m = stack[-1][key] + # we've descended a level deeper, if value is str, we have to overwrite it to mapper + if not isinstance(_m, mapper): + _m = stack[-1][key] = mapper() else: _m = mapper() stack[-1][key] = _m - stack.append(_m) - expect_bracket = True + if match.group('eblock') is None: + # only expect a bracket if it's not already closed or on the same line + stack.append(_m) + if match.group('sblock') is None: + expect_bracket = True # we've matched a simple keyvalue pair, map it to the last dict obj in the stack else: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/steam-launcher/subprojects/python-vdf/vdf/vdict.py new/steam-launcher/subprojects/python-vdf/vdf/vdict.py --- old/steam-launcher/subprojects/python-vdf/vdf/vdict.py 2021-04-07 14:33:15.000000000 +0200 +++ new/steam-launcher/subprojects/python-vdf/vdf/vdict.py 2021-07-23 17:32:58.000000000 +0200 @@ -5,7 +5,7 @@ _iter_values = 'values' _range = range _string_type = str - import collections as _c + import collections.abc as _c class _kView(_c.KeysView): def __iter__(self): return self._mapping.iterkeys() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/steam-launcher/subprojects/steam-devices/60-steam-input.rules new/steam-launcher/subprojects/steam-devices/60-steam-input.rules --- old/steam-launcher/subprojects/steam-devices/60-steam-input.rules 2021-04-07 14:33:15.000000000 +0200 +++ new/steam-launcher/subprojects/steam-devices/60-steam-input.rules 2021-07-23 17:32:58.000000000 +0200 @@ -40,6 +40,9 @@ # Faceoff Wired Pro Controller for Nintendo Switch KERNEL=="hidraw*", ATTRS{idVendor}=="0e6f", ATTRS{idProduct}=="0180", MODE="0660", TAG+="uaccess" +# PDP Wired Fight Pad Pro for Nintendo Switch +KERNEL=="hidraw*", ATTRS{idVendor}=="0e6f", ATTRS{idProduct}=="0185", MODE="0660", TAG+="uaccess" + # PowerA Wired Controller for Nintendo Switch KERNEL=="hidraw*", ATTRS{idVendor}=="20d6", ATTRS{idProduct}=="a711", MODE="0660", TAG+="uaccess" @@ -59,6 +62,9 @@ # Razer Raiju PS4 Controller KERNEL=="hidraw*", ATTRS{idVendor}=="1532", ATTRS{idProduct}=="1000", MODE="0660", TAG+="uaccess" +# Razer Raiju 2 Tournament Edition +KERNEL=="hidraw*", ATTRS{idVendor}=="1532", ATTRS{idProduct}=="1007", MODE="0660", TAG+="uaccess" + # Razer Panthera Arcade Stick KERNEL=="hidraw*", ATTRS{idVendor}=="1532", ATTRS{idProduct}=="0401", MODE="0660", TAG+="uaccess" @@ -86,6 +92,9 @@ # HORIPAD for Nintendo Switch KERNEL=="hidraw*", ATTRS{idVendor}=="0f0d", ATTRS{idProduct}=="00c1", MODE="0660", TAG+="uaccess" +# HORIPAD mini 4 +KERNEL=="hidraw*", ATTRS{idVendor}=="0f0d", ATTRS{idProduct}=="00ee", MODE="0660", TAG+="uaccess" + # Armor Armor 3 Pad PS4 KERNEL=="hidraw*", ATTRS{idVendor}=="0c12", ATTRS{idProduct}=="0e10", MODE="0660", TAG+="uaccess"