Run Wine in the steam runtime

This commit is contained in:
Andrew Eikum 2019-02-05 09:41:03 -06:00
parent 821a09cacd
commit 0ecb100046
5 changed files with 27 additions and 10 deletions

View File

@ -126,7 +126,7 @@ VM. If you are configuring manually, run these steps:
mkdir proton/mybuild/ mkdir proton/mybuild/
cd proton/mybuild cd proton/mybuild
../configure.sh --steam-runtime64=docker:steam-proton-dev --steam-runtime32=docker:steam-proton-dev32 ../configure.sh --steam-runtime64=docker:steam-proton-dev --steam-runtime32=docker:steam-proton-dev32 --steam-runtime=$HOME/steam-runtime/runtime/
If you are building without the Steam runtime, then instead use: If you are building without the Steam runtime, then instead use:

2
Vagrantfile vendored
View File

@ -36,7 +36,7 @@ Vagrant.configure(2) do |config|
#install host build-time dependencies #install host build-time dependencies
apt-get update apt-get update
apt-get install -y gpgv2 gnupg2 g++ g++-6-multilib mingw-w64 git docker-ce fontforge-nox apt-get install -y gpgv2 gnupg2 g++ g++-6-multilib mingw-w64 git docker-ce fontforge-nox python-debian
apt-get -y -t stretch-backports install meson apt-get -y -t stretch-backports install meson
#winehq-devel is installed to pull in dependencies to run Wine #winehq-devel is installed to pull in dependencies to run Wine

View File

@ -31,6 +31,7 @@ else # (Rest of the file is the else)
# STEAMRT64_IMAGE - Name of the image if mode is set # STEAMRT64_IMAGE - Name of the image if mode is set
# STEAMRT32_MODE - Same as above for 32-bit container (can be different type) # STEAMRT32_MODE - Same as above for 32-bit container (can be different type)
# STEAMRT32_IMAGE - Same as above for 32-bit container # STEAMRT32_IMAGE - Same as above for 32-bit container
# STEAMRT_PATH - Path to built runtime which contains run.sh
ifeq ($(SRCDIR),) ifeq ($(SRCDIR),)
foo := $(error SRCDIR not set, do not include makefile_base directly, run ./configure.sh to generate Makefile) foo := $(error SRCDIR not set, do not include makefile_base directly, run ./configure.sh to generate Makefile)
@ -73,6 +74,12 @@ else ifneq ($(STEAMRT32_MODE),)
foo := $(error Unrecognized STEAMRT32_MODE $(STEAMRT32_MODE)) foo := $(error Unrecognized STEAMRT32_MODE $(STEAMRT32_MODE))
endif endif
ifneq ($(STEAMRT_PATH),)
STEAM_RUNTIME_RUNSH := $(STEAMRT_PATH)/run.sh
else
STEAM_RUNTIME_RUNSH :=
endif
SELECT_DOCKER_IMAGE := SELECT_DOCKER_IMAGE :=
# If we're using containers to sub-invoke the various builds, jobserver won't work, have some silly auto-jobs # If we're using containers to sub-invoke the various builds, jobserver won't work, have some silly auto-jobs
@ -334,8 +341,8 @@ dist: $(DIST_TARGETS) wine vrclient lsteamclient dxvk | $(DST_DIR)
echo `date '+%s'` `GIT_DIR=$(abspath $(SRCDIR)/.git) git describe --tags` > $(DIST_VERSION) echo `date '+%s'` `GIT_DIR=$(abspath $(SRCDIR)/.git) git describe --tags` > $(DIST_VERSION)
cp $(DIST_VERSION) $(DST_BASE)/ cp $(DIST_VERSION) $(DST_BASE)/
rm -rf $(abspath $(DIST_PREFIX)) && \ rm -rf $(abspath $(DIST_PREFIX)) && \
WINEPREFIX=$(abspath $(DIST_PREFIX)) $(WINE_OUT_BIN) wineboot && \ WINEPREFIX=$(abspath $(DIST_PREFIX)) $(STEAM_RUNTIME_RUNSH) $(WINE_OUT_BIN) wineboot && \
WINEPREFIX=$(abspath $(DIST_PREFIX)) $(WINE_OUT_SERVER) -w && \ WINEPREFIX=$(abspath $(DIST_PREFIX)) $(STEAM_RUNTIME_RUNSH) $(WINE_OUT_SERVER) -w && \
ln -s $(FONTLINKPATH)/LiberationSans-Regular.ttf $(abspath $(DIST_PREFIX))/drive_c/windows/Fonts/arial.ttf && \ ln -s $(FONTLINKPATH)/LiberationSans-Regular.ttf $(abspath $(DIST_PREFIX))/drive_c/windows/Fonts/arial.ttf && \
ln -s $(FONTLINKPATH)/LiberationSans-Bold.ttf $(abspath $(DIST_PREFIX))/drive_c/windows/Fonts/arialbd.ttf && \ ln -s $(FONTLINKPATH)/LiberationSans-Bold.ttf $(abspath $(DIST_PREFIX))/drive_c/windows/Fonts/arialbd.ttf && \
ln -s $(FONTLINKPATH)/LiberationSerif-Regular.ttf $(abspath $(DIST_PREFIX))/drive_c/windows/Fonts/times.ttf && \ ln -s $(FONTLINKPATH)/LiberationSerif-Regular.ttf $(abspath $(DIST_PREFIX))/drive_c/windows/Fonts/times.ttf && \

View File

@ -71,6 +71,7 @@ function configure() {
local steamrt64_name="${1#*:}" local steamrt64_name="${1#*:}"
local steamrt32_type="${2%:*}" local steamrt32_type="${2%:*}"
local steamrt32_name="${2#*:}" local steamrt32_name="${2#*:}"
local steamrt_path="${3}"
check_steamrt_image "$steamrt64_type" "$steamrt64_name" check_steamrt_image "$steamrt64_type" "$steamrt64_name"
check_steamrt_image "$steamrt32_type" "$steamrt32_name" check_steamrt_image "$steamrt32_type" "$steamrt32_name"
@ -108,6 +109,7 @@ function configure() {
echo "STEAMRT64_IMAGE := $(escape_for_make "$steamrt64_name")" echo "STEAMRT64_IMAGE := $(escape_for_make "$steamrt64_name")"
echo "STEAMRT32_MODE := $(escape_for_make "$steamrt32_type")" echo "STEAMRT32_MODE := $(escape_for_make "$steamrt32_type")"
echo "STEAMRT32_IMAGE := $(escape_for_make "$steamrt32_name")" echo "STEAMRT32_IMAGE := $(escape_for_make "$steamrt32_name")"
echo "STEAMRT_PATH := $(escape_for_make "$steamrt_path")"
# Include base # Include base
echo "" echo ""
@ -171,6 +173,9 @@ function parse_args() {
elif [[ $arg = --steam-runtime64 ]]; then elif [[ $arg = --steam-runtime64 ]]; then
val_used=1 val_used=1
arg_steamrt64="$val" arg_steamrt64="$val"
elif [[ $arg = --steam-runtime ]]; then
val_used=1
arg_steamrt="$val"
elif [[ $arg = --no-steam-runtime ]]; then elif [[ $arg = --no-steam-runtime ]]; then
arg_no_steamrt=1 arg_no_steamrt=1
else else
@ -207,7 +212,7 @@ function parse_args() {
} }
usage() { usage() {
"$1" "Usage: $0 { --no-steam-runtime | --steam-runtime32=<image> --steam-runtime64=<image> }" "$1" "Usage: $0 { --no-steam-runtime | --steam-runtime32=<image> --steam-runtime64=<image> --steam-runtime=<path> }"
"$1" " Generate a Makefile for building Proton. May be run from another directory to create" "$1" " Generate a Makefile for building Proton. May be run from another directory to create"
"$1" " out-of-tree build directories (e.g. mkdir mybuild && cd mybuild && ../configure.sh)" "$1" " out-of-tree build directories (e.g. mkdir mybuild && cd mybuild && ../configure.sh)"
"$1" "" "$1" ""
@ -230,6 +235,10 @@ usage() {
"$1" " --steam-runtime32=docker:<image> The 32-bit docker image to use for steps that require" "$1" " --steam-runtime32=docker:<image> The 32-bit docker image to use for steps that require"
"$1" " a 32-bit environment. See --steam-runtime64." "$1" " a 32-bit environment. See --steam-runtime64."
"$1" "" "$1" ""
"$1" " --steam-runtime=<path> Path to the runtime built for the host (i.e. the output"
"$1" " directory given to steam-runtime/build-runtime.py). Should"
"$1" " contain run.sh."
"$1" ""
"$1" " --no-steam-runtime Do not automatically invoke any runtime SDK as part of the build." "$1" " --no-steam-runtime Do not automatically invoke any runtime SDK as part of the build."
"$1" " Build steps may still be manually run in a runtime environment." "$1" " Build steps may still be manually run in a runtime environment."
exit 1; exit 1;
@ -240,10 +249,10 @@ parse_args "$@" || usage err
[[ -z $arg_help ]] || usage info [[ -z $arg_help ]] || usage info
# Sanity check arguments # Sanity check arguments
if [[ -n $arg_no_steamrt && (-n $arg_steamrt32 || -n $arg_steamrt64) ]]; then if [[ -n $arg_no_steamrt && (-n $arg_steamrt32 || -n $arg_steamrt64 || -n $arg_steamrt) ]]; then
die "Cannot specify a Steam Runtime SDK as well as --no-steam-runtime" die "Cannot specify a Steam Runtime SDK as well as --no-steam-runtime"
elif [[ -z $arg_no_steamrt && ( -z $arg_steamrt32 || -z $arg_steamrt64 ) ]]; then elif [[ -z $arg_no_steamrt && ( -z $arg_steamrt32 || -z $arg_steamrt64 || -z $arg_steamrt ) ]]; then
die "Must specify either --no-steam-runtime or both --steam-runtime32 and --steam-runtime64" die "Must specify either --no-steam-runtime or all of --steam-runtime32, --steam-runtime64, and --steam-runtime"
fi fi
configure "$arg_steamrt64" "$arg_steamrt32" configure "$arg_steamrt64" "$arg_steamrt32" "$arg_steamrt"

View File

@ -4,10 +4,11 @@
git clone https://github.com/ValveSoftware/steam-runtime.git git clone https://github.com/ValveSoftware/steam-runtime.git
./steam-runtime/setup_docker.sh --beta amd64 --extra-bootstrap=/home/vagrant/proton/steamrt-bootstrap.sh steam-proton-dev-beta ./steam-runtime/setup_docker.sh --beta amd64 --extra-bootstrap=/home/vagrant/proton/steamrt-bootstrap.sh steam-proton-dev-beta
./steam-runtime/setup_docker.sh --beta i386 --extra-bootstrap=/home/vagrant/proton/steamrt-bootstrap.sh steam-proton-dev32-beta ./steam-runtime/setup_docker.sh --beta i386 --extra-bootstrap=/home/vagrant/proton/steamrt-bootstrap.sh steam-proton-dev32-beta
(cd steam-runtime && ./build-runtime.py --output=./runtime/)
#configure proton build #configure proton build
mkdir build mkdir build
cd build cd build
../proton/configure.sh --steam-runtime64=docker:steam-proton-dev-beta --steam-runtime32=docker:steam-proton-dev32-beta ../proton/configure.sh --steam-runtime64=docker:steam-proton-dev-beta --steam-runtime32=docker:steam-proton-dev32-beta --steam-runtime="$HOME"/steam-runtime/runtime/
#if building without the runtime, use: #if building without the runtime, use:
#../proton/configure.sh --no-steam-runtime #../proton/configure.sh --no-steam-runtime