From 0ecb100046f69489fb5838bc06b5ce240d8e9a5e Mon Sep 17 00:00:00 2001 From: Andrew Eikum Date: Tue, 5 Feb 2019 09:41:03 -0600 Subject: [PATCH] Run Wine in the steam runtime --- README.md | 2 +- Vagrantfile | 2 +- build/makefile_base.mak | 11 +++++++++-- configure.sh | 19 ++++++++++++++----- vagrant-user-setup.sh | 3 ++- 5 files changed, 27 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index e7a7909b..92005dec 100644 --- a/README.md +++ b/README.md @@ -126,7 +126,7 @@ VM. If you are configuring manually, run these steps: mkdir 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: diff --git a/Vagrantfile b/Vagrantfile index fccd5b1b..337a14cc 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -36,7 +36,7 @@ Vagrant.configure(2) do |config| #install host build-time dependencies 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 #winehq-devel is installed to pull in dependencies to run Wine diff --git a/build/makefile_base.mak b/build/makefile_base.mak index f8ad5337..690a0c06 100644 --- a/build/makefile_base.mak +++ b/build/makefile_base.mak @@ -31,6 +31,7 @@ else # (Rest of the file is the else) # STEAMRT64_IMAGE - Name of the image if mode is set # STEAMRT32_MODE - Same as above for 32-bit container (can be different type) # STEAMRT32_IMAGE - Same as above for 32-bit container +# STEAMRT_PATH - Path to built runtime which contains run.sh ifeq ($(SRCDIR),) 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)) endif +ifneq ($(STEAMRT_PATH),) + STEAM_RUNTIME_RUNSH := $(STEAMRT_PATH)/run.sh +else + STEAM_RUNTIME_RUNSH := +endif + SELECT_DOCKER_IMAGE := # 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) cp $(DIST_VERSION) $(DST_BASE)/ rm -rf $(abspath $(DIST_PREFIX)) && \ - WINEPREFIX=$(abspath $(DIST_PREFIX)) $(WINE_OUT_BIN) wineboot && \ - WINEPREFIX=$(abspath $(DIST_PREFIX)) $(WINE_OUT_SERVER) -w && \ + WINEPREFIX=$(abspath $(DIST_PREFIX)) $(STEAM_RUNTIME_RUNSH) $(WINE_OUT_BIN) wineboot && \ + 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-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 && \ diff --git a/configure.sh b/configure.sh index 026f1d2e..f48f8ff5 100755 --- a/configure.sh +++ b/configure.sh @@ -71,6 +71,7 @@ function configure() { local steamrt64_name="${1#*:}" local steamrt32_type="${2%:*}" local steamrt32_name="${2#*:}" + local steamrt_path="${3}" check_steamrt_image "$steamrt64_type" "$steamrt64_name" check_steamrt_image "$steamrt32_type" "$steamrt32_name" @@ -108,6 +109,7 @@ function configure() { echo "STEAMRT64_IMAGE := $(escape_for_make "$steamrt64_name")" echo "STEAMRT32_MODE := $(escape_for_make "$steamrt32_type")" echo "STEAMRT32_IMAGE := $(escape_for_make "$steamrt32_name")" + echo "STEAMRT_PATH := $(escape_for_make "$steamrt_path")" # Include base echo "" @@ -171,6 +173,9 @@ function parse_args() { elif [[ $arg = --steam-runtime64 ]]; then val_used=1 arg_steamrt64="$val" + elif [[ $arg = --steam-runtime ]]; then + val_used=1 + arg_steamrt="$val" elif [[ $arg = --no-steam-runtime ]]; then arg_no_steamrt=1 else @@ -207,7 +212,7 @@ function parse_args() { } usage() { - "$1" "Usage: $0 { --no-steam-runtime | --steam-runtime32= --steam-runtime64= }" + "$1" "Usage: $0 { --no-steam-runtime | --steam-runtime32= --steam-runtime64= --steam-runtime= }" "$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" "" @@ -230,6 +235,10 @@ usage() { "$1" " --steam-runtime32=docker: The 32-bit docker image to use for steps that require" "$1" " a 32-bit environment. See --steam-runtime64." "$1" "" + "$1" " --steam-runtime= 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" " Build steps may still be manually run in a runtime environment." exit 1; @@ -240,10 +249,10 @@ parse_args "$@" || usage err [[ -z $arg_help ]] || usage info # 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" -elif [[ -z $arg_no_steamrt && ( -z $arg_steamrt32 || -z $arg_steamrt64 ) ]]; then - die "Must specify either --no-steam-runtime or both --steam-runtime32 and --steam-runtime64" +elif [[ -z $arg_no_steamrt && ( -z $arg_steamrt32 || -z $arg_steamrt64 || -z $arg_steamrt ) ]]; then + die "Must specify either --no-steam-runtime or all of --steam-runtime32, --steam-runtime64, and --steam-runtime" fi -configure "$arg_steamrt64" "$arg_steamrt32" +configure "$arg_steamrt64" "$arg_steamrt32" "$arg_steamrt" diff --git a/vagrant-user-setup.sh b/vagrant-user-setup.sh index ccd9e760..1c8a5f7e 100755 --- a/vagrant-user-setup.sh +++ b/vagrant-user-setup.sh @@ -4,10 +4,11 @@ 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 i386 --extra-bootstrap=/home/vagrant/proton/steamrt-bootstrap.sh steam-proton-dev32-beta +(cd steam-runtime && ./build-runtime.py --output=./runtime/) #configure proton build mkdir 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: #../proton/configure.sh --no-steam-runtime