Skip to content
Snippets Groups Projects
scout.yaml 6.18 KiB
Newer Older
# https://github.com/ValveSoftware/steam-runtime/blob/master/setup_chroot.sh
#
# Copyright © 2013-2016 Valve Corporation
# Copyright © 2017-2019 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:
  - steamrt-container-host-compat
  - steamrt-container
  ln -s /usr/libexec/flatpak-xdg-utils/xdg-email /usr/bin/
  ln -s /usr/libexec/flatpak-xdg-utils/xdg-open /usr/bin/
  if [ -e /usr/share/i18n/locales/en_US ]; then
    echo "en_US.UTF-8 UTF-8" > /etc/locale.gen
    localedef -v -i en_US -c -f UTF-8 en_US.UTF-8 || :
    test -e /usr/lib/locale/locale-archive
  fi

  test -d /usr/lib/gconv
  test -d /usr/lib/locale
  test -d /usr/share/i18n
  test -d /usr/share/libdrm
  if dpkg-query -W steamrt-container-host-compat:amd64; then
    test -d /usr/lib64
    test -d /usr/lib64/gconv
    test -d /usr/lib64/locale
    test -d /usr/lib/x86_64-linux-gnu/gconv
    # Arch Linux uses a non-standard ELF interpreter for some binaries in
    # the glibc package. We can't create this from
    # steamrt-container-host-compat, because that breaks dpkg-shlibdeps.
    ln -fns /lib64/ld-linux-x86-64.so.2 /usr/lib/ld-linux-x86-64.so.2
    if ! [ -e /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 ] \
      && ! [ -L /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 ] \
    ; then
      install -d /usr/lib/x86_64-linux-gnu
      ln -s /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 \
        /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
    fi
    test -e /usr/x86_64-pc-linux-gnu/lib/ld-linux-x86-64.so.2
  fi
  if dpkg-query -W steamrt-container-host-compat:i386; then
    test -d /usr/lib32
    test -d /usr/lib32/gconv
    test -d /usr/lib32/locale
    test -d /usr/lib/i386-linux-gnu/gconv
    if ! [ -e /usr/lib/i386-linux-gnu/ld-linux.so.2 ] \
      && ! [ -L /usr/lib/i386-linux-gnu/ld-linux.so.2 ] \
    ; then
      install -d /usr/lib/i386-linux-gnu
      ln -s /lib/i386-linux-gnu/ld-linux.so.2 \
        /usr/lib/i386-linux-gnu/ld-linux.so.2
    fi
    test -e /usr/i686-pc-linux-gnu/lib/ld-linux.so.2
    if [ -x /usr/bin/python3.5 ] && ! [ -e /usr/bin/python3 ]; then
      ln -fns python3.5 /usr/bin/python3
    fi

  add_packages_multiarch:
    - steamrt-libdebug:
        debug_symbols: true
    - steamrt-libdevel
    - steamrt-dev
    - steamrt-libdebug-non-multiarch:
        debug_symbols: true
    - steamrt-libdevel-non-multiarch
  post_script: |
    ln -sv busybox /bin/dos2unix
    ln -sv busybox /bin/ifconfig
    ln -sv busybox /bin/ip
    ln -sv busybox /bin/nc
    ln -sv busybox /bin/ping
    ln -sv busybox /bin/ping6
    ln -sv busybox /bin/route
    ln -sv busybox /bin/telnet
    ln -sv busybox /bin/traceroute
    ln -sv busybox /bin/traceroute6
    ln -sv busybox /bin/unix2dos
    ln -sv busybox /bin/vi
    # 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
    echo "Before fixing include paths:"
    ls -ld /usr/include/c++/*/*-linux-gnu
    ls -ld /usr/include/*-linux-gnu/c++/*
    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
    echo "After fixing include paths:"
    ls -ld /usr/include/c++/*/*-linux-gnu
    ls -ld /usr/include/*-linux-gnu/c++/*

    # 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