Skip to content
Snippets Groups Projects
com.valvesoftware.SteamRuntime.yaml 12.2 KiB
Newer Older
# https://github.com/ValveSoftware/steam-runtime/blob/master/packages.txt
# https://github.com/ValveSoftware/steam-runtime/blob/master/setup_chroot.sh
#
# Copyright © 2013-2016 Valve Corporation
# Copyright © 2017 Collabora Ltd.
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of these scripts and associated documentation files (the
# "Software"), to deal in the Software without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so, subject to
# the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

id_prefix: com.valvesoftware.SteamRuntime

add_packages_multiarch:
  - dconf-gsettings-backend
  - freeglut3
  - gtk2-engines
  - gtk2-engines-murrine
  - gtk2-engines-pixbuf
  - libacl1
  - libasn1-8-heimdal
  - libasound2
  - libasound2-plugins
  - libasyncns0
  - libatk1.0-0
  - libattr1
  - libavahi-client3
  - libavahi-common3
  - libavcodec53
  - libavfilter2
  - libavformat53
  - libavutil51
  - libbz2-1.0
  - libcairo2
  - libcanberra-gtk-module
  - libcanberra-gtk0
  - libcanberra0
  - libcap2
  - libcg
  - libcggl
  - libcomerr2
  - libcups2
  - libcurl3
  - libcurl3-gnutls
  - libdbus-1-3
  - libdbus-glib-1-2
  - libdbusmenu-glib4
  - libdbusmenu-gtk4
  - libexif12
  - libexpat1
  - libffi6
  - libflac8
  - libfltk1.1
  - libfontconfig1
  - libfreetype6
  - libgcc1
  - libgconf-2-4
  - libgcrypt11
  - libgdk-pixbuf2.0-0
  - libglew1.10
  - libglew1.6
  - libglib2.0-0
  - libglu1-mesa
  - libgmp10
  - libgnutls26
  - libgnutls30
  - libgomp1
  - libgpg-error0
  - libgssapi-krb5-2
  - libgstreamer-plugins-base0.10-0
  - libgtk2.0-0
  - libgtk2.0-common
  - libgudev-1.0-0
  - libhcrypto4-heimdal
  - libheimbase1-heimdal
  - libheimntlm0-heimdal
  - libhogweed4
  - libhx509-5-heimdal
  - libice6
  - libidn11
  - libjack-jackd2-0
  - libjpeg-turbo8
  - libjson0
  - libk5crypto3
  - libkeyutils1
  - libkrb5-26-heimdal
  - libkrb5-3
  - libkrb5support0
  - liblcms2-2
  - libldap-2.4-2
  - libltdl7
  - libmikmod2
  - libmpg123-0
  - libncurses5
  - libncursesw5
  - libnettle6
  - libnotify4
  - libnspr4
  - libnss3
  - libogg0
  - libopenal1
  - libopus0
  - libopusfile0
  - liborc-0.4-0
  - libp11-kit0
  - libpango1.0-0
  - libpci3
  - libpcre3
  - libpcrecpp0
  - libpixman-1-0
  - libpng12-0
  - libpulse0
  - libroken18-heimdal
  - librtmp0
  - libsamplerate0
  - libsasl2-2
  - libsdl-image1.2
  - libsdl-mixer1.2
  - libsdl-ttf2.0-0
  - libsdl1.2debian
  - libsdl2
  - libsdl2-image
  - libsdl2-mixer
  - libsdl2-net
  - libsdl2-ttf
  - libselinux1
  - libsm6
  - libsndfile1
  - libspeex1
  - libspeexdsp1
  - libsqlite3-0
  - libssl1.0.0
  - libstdc++6
  - libswscale2
  - libtasn1-3
  - libtasn1-6
  - libtdb1
  - libtheora0
  - libtiff4
  - libtinfo5
  - libudev0
  - libusb-1.0-0
  - libuuid1
  - libva-glx1
  - libva-x11-1
  - libvdpau1
  - libvorbis0a
  - libvorbisenc2
  - libvorbisfile3
  - libwind0-heimdal
  - libwrap0
  - libx11-6
  - libx11-data
  - libx11-xcb1
  - libxau6
  - libxaw7
  - libxcb-composite0
  - libxcb-damage0
  - libxcb-dpms0
  - libxcb-dri2-0
  - libxcb-dri3-0
  - libxcb-glx0
  - libxcb-present0
  - libxcb-randr0
  - libxcb-record0
  - libxcb-render0
  - libxcb-res0
  - libxcb-screensaver0
  - libxcb-shape0
  - libxcb-shm0
  - libxcb-sync1
  - libxcb-xevie0
  - libxcb-xf86dri0
  - libxcb-xfixes0
  - libxcb-xinerama0
  - libxcb-xkb1
  - libxcb-xprint0
  - libxcb-xtest0
  - libxcb-xv0
  - libxcb-xvmc0
  - libxcomposite1
  - libxcursor1
  - libxdamage1
  - libxdmcp6
  - libxext6
  - libxfixes3
  - libxft2
  - libxi6
  - libxinerama1
  - libxml2
  - libxmu6
  - libxpm4
  - libxrandr2
  - libxrender1
  - libxss1
  - libxt6
  - libxtst6
  - libxxf86vm1
  - zlib1g

  # Not in the real Runtime, but needed for Intel gfx.
  # libgl1-mesa-glx is pulled in by libglew1.10 etc., so we might as
  # well include a complete (albeit obsolete) copy of Mesa that can
  # at least run llvmpipe
Simon McVittie's avatar
Simon McVittie committed
  - libgl1-mesa-dri
  - libgl1-mesa-glx
  - libtxc-dxtn-s2tc0

add_packages:
  # Not in the real Runtime, but useful and depended on by Steam
  - curl
  - file

  # Not in the real Runtime, but xdg-open is useful
  - flatpak-xdg-utils

  # Not in the real Runtime, but Steam tries to run lspci
  - pciutils

  # Not in the real Runtime, but Steam tries to run it. Since Ubuntu
  # 14.10 (utopic) and Debian 8 (jessie) it's in coreutils instead.
  - realpath

  # Not in the real Runtime, but useful for debugging.
  - xterm

  # Not in the real Runtime, but xz is a basic tool
  - xz-utils

  # In the real Runtime, although it apparently doesn't work
post_script: |
  ln -s /usr/libexec/flatpak-xdg-utils/xdg-email /usr/bin/
  ln -s /usr/libexec/flatpak-xdg-utils/xdg-open /usr/bin/

  add_packages_multiarch:
    - libopus-dev
    - libopusfile-dev

  # Not adding these to the SDK for now to get a baseline for what's
  # needed for a self-contained image
  .add_packages:
    - apt-forktracer
    - build-essential
    - clang-3.6
    - cmake
    - debhelper
    - dpkg-dev
Simon McVittie's avatar
Simon McVittie committed
    - fakeroot
    - fcitx-libs-dev
    - g++-4.8
    - gcc-4.8
    - gdb
    - libacl1-dev
    - libappindicator-dev
    - libasound2-dev
    - libasyncns-dev
    - libatk1.0-dev
    - libattr1-dev
    - libavahi-client-dev
    - libavahi-common-dev
    - libavcodec-dev
    - libavfilter-dev
    - libavformat-dev
    - libavutil-dev
    - libbz2-dev
Simon McVittie's avatar
Simon McVittie committed
    - libc6-dbg
    - libcairo2-dev
    - libcanberra-dev
    - libcanberra-gtk-dev
    - libcap-dev
    - libcups2-dev
    - libcurl4-gnutls-dev
    - libdbus-1-dev
    - libdbus-glib-1-dev
    - libexif-dev
    - libexpat1-dev
    - libffi-dev
    - libflac-dev
    - libfltk1.1-dev
    - libfontconfig1-dev
    - libfreetype6-dev
    - libgconf2-dev
    - libgcrypt11-dev
    - libgdk-pixbuf2.0-dev
    - libglew-dev
    - libglib2.0-dev
    - libglu1-mesa-dev
    - libgmp-dev
    - libgnutls-dev
    - libgpg-error-dev
    - libgstreamer-plugins-base0.10-dev
    - libgstreamer0.10-dev
    - libgtk2.0-dev
    - libgudev-1.0-dev
    - libice-dev
    - libidn11-dev
    - libindicator-dev
    - libjack-jackd2-dev
    - libjpeg-turbo8-dev
    - libjson0-dev
    - libkeyutils-dev
    - libkrb5-dev
    - liblcms2-dev
    - libldap2-dev
    - libltdl-dev
    - libmikmod2-dev
    - libmpg123-dev
    - libncurses5-dev
    - libncursesw5-dev
    - libnm-glib-dev
    - libnm-util-dev
    - libnotify-dev
    - libnspr4-dev
    - libnss3-dev
    - libogg-dev
    - libopenal-dev
    - liborc-0.4-dev
    - libp11-kit-dev
    - libpango1.0-dev
    - libpci-dev
    - libpcre3-dev
    - libpixman-1-dev
    - libpng12-dev
    - libpulse-dev
    - librtmp-dev
    - libsamplerate0-dev
    - libsasl2-dev
    - libsdl-image1.2-dev
    - libsdl-mixer1.2-dev
    - libsdl-ttf2.0-dev
    - libsdl1.2-dev
    - libsdl2-dev
    - libsdl2-image-dev
    - libsdl2-mixer-dev
    - libsdl2-net-dev
    - libsdl2-ttf-dev
    - libselinux1-dev
    - libsm-dev
    - libsndfile1-dev
    - libspeex-dev
    - libspeexdsp-dev
    - libsqlite3-dev
    - libssl-dev
    - libstdc++6-4.6-dev
    - libstdc++6-4.6-pic
    - libtasn1-6-dev
    - libtbb-dev
    - libtdb-dev
    - libtheora-dev
    - libtiff4-dev
    - libtinfo-dev
    - libudev-dev
    - libusb-1.0-0-dev
    - libva-dev
    - libvdpau-dev
    - libvorbis-dev
    - libvpx-dev
    - libvulkan-dev
    - libwrap0-dev
    - libx11-dev
    - libx11-xcb-dev
    - libxau-dev
    - libxaw7-dev
    - libxcb-composite0-dev
    - libxcb-damage0-dev
    - libxcb-dpms0-dev
    - libxcb-dri2-0-dev
    - libxcb-dri3-dev
    - libxcb-glx0-dev
    - libxcb-present-dev
    - libxcb-randr0-dev
    - libxcb-record0-dev
    - libxcb-render0-dev
    - libxcb-res0-dev
    - libxcb-screensaver0-dev
    - libxcb-shape0-dev
    - libxcb-shm0-dev
    - libxcb-sync-dev
    - libxcb-xevie0-dev
    - libxcb-xf86dri0-dev
    - libxcb-xfixes0-dev
    - libxcb-xinerama0-dev
    - libxcb-xkb-dev
    - libxcb-xprint0-dev
    - libxcb-xtest0-dev
    - libxcb-xv0-dev
    - libxcb-xvmc0-dev
    - libxcb1-dev
    - libxcomposite-dev
    - libxcursor-dev
    - libxdamage-dev
    - libxdmcp-dev
    - libxext-dev
    - libxfixes-dev
    - libxft-dev
    - libxi-dev
    - libxinerama-dev
    - libxml2-dev
    - libxmu-dev
    - libxpm-dev
    - libxrandr-dev
    - libxrender-dev
    - libxss-dev
    - libxt-dev
    - libxtst-dev
    - libxxf86vm-dev
    - mawk
    - net-tools
    - netbase
    - netcat-openbsd
    - nettle-dev
    - network-manager-dev
    - nvidia-cg-toolkit
Simon McVittie's avatar
Simon McVittie committed
    - valgrind
    - x11proto-composite-dev
    - x11proto-core-dev
    - x11proto-damage-dev
    - x11proto-fixes-dev
    - x11proto-input-dev
    - x11proto-kb-dev
    - x11proto-randr-dev
    - x11proto-render-dev
    - x11proto-scrnsaver-dev
    - x11proto-xext-dev
    - x11proto-xf86vidmode-dev
    - x11proto-xinerama-dev
    - xtrans-dev
    - zlib1g-dev

  # TODO: also
  #  - lldb-3.4
  #  - clang-3.4
  # but despite what it says in the script, those don't actually seem to be
  # co-installable?

    # Workaround bug 714890 in 32-bit clang. Gcc 4.8 changed the include paths.
    # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=714890
    #   /usr/include/c++/4.6/i686-linux-gnu/bits/c++config.h
    #   /usr/include/i386-linux-gnu/c++/4.8/bits/c++config.h
    if [ -d /usr/include/i386-linux-gnu/c++/4.8 ]; then
        ln -s /usr/include/i386-linux-gnu/c++/4.8 /usr/include/c++/4.8/i686-linux-gnu
    fi

    # Setup compiler alternatives
    update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 50
    update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.6 50
    update-alternatives --install /usr/bin/cpp cpp-bin /usr/bin/cpp-4.6 50

    update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 100
    update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 100
    update-alternatives --install /usr/bin/cpp cpp-bin /usr/bin/cpp-4.8 100

    #update-alternatives --install /usr/bin/gcc gcc /usr/bin/clang-3.4 50
    #update-alternatives --install /usr/bin/g++ g++ /usr/bin/clang++-3.4 50

    update-alternatives --install /usr/bin/gcc gcc /usr/bin/clang-3.6 50
    update-alternatives --install /usr/bin/g++ g++ /usr/bin/clang++-3.6 50

    # gcc-4.8 is the default
    update-alternatives --set gcc /usr/bin/gcc-4.8
    update-alternatives --set g++ /usr/bin/g++-4.8
    update-alternatives --set cpp-bin /usr/bin/cpp-4.8

add-extensions:
  # FIXME: This is not properly multiarch-aware, but it's enough for a
  # proof of concept.
  com.valvesoftware.SteamRuntime.GL:
    directory: lib/GL
    subdirectories: true
    no-autodownload: true
    autodelete: false
    add-ld-path: lib
    download-if: active-gl-driver
    enable-if: active-gl-driver
    merge-dirs: vulkan/icd.d;glvnd/egl_vendor.d
  # FIXME: Ideally this should only be added for 64-bit architectures
  com.valvesoftware.SteamRuntime.GL32:
    directory: lib/GL32
    subdirectories: true
    no-autodownload: true
    autodelete: false
    add-ld-path: lib
    download-if: active-gl-driver
    enable-if: active-gl-driver
    merge-dirs: vulkan/icd.d;glvnd/egl_vendor.d