forked from mmtrt/WINE_AppImage
-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathwrapper
executable file
·106 lines (87 loc) · 3.2 KB
/
wrapper
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#!/usr/bin/env bash
######################################################################
# @author : Ruan E. Formigoni ([email protected])
# @file : wrapper
# @created : Saturday Jan 21, 2023 19:00:53 -03
######################################################################
set -e
# WINE env
export WINEPREFIX=${WINEPREFIX:-"$HOME/.wine-appimage"}
export WINEDEBUG=${WINEDEBUG:-"fixme-all"}
export WINEHOME=${WINEHOME:-"$WINEPREFIX/wine-home"}
# DXVK env
export DXVK_HUD=${DXVK_HUD:-"0"}
export DXVK_LOG_LEVEL=${DXVK_LOG_LEVEL:-"none"}
export DXVK_STATE_CACHE=${DXVK_STATE_CACHE:-"0"}
# Create WINEPREFIX
mkdir -p "$WINEPREFIX"
# Create WINEHOME
mkdir -p "$WINEHOME"
# check gpu vendor
if command -v glxinfo &>/dev/null; then
VENDOR=$(glxinfo -B | grep "OpenGL vendor")
VENDOR=${VENDOR,,}
echo "GPU Vendor: $VENDOR"
fi
# Patch driver path
if [[ -n "$WINE_HOST_DRIVERS" ]]; then
unset LIBGL_DRIVERS_PATH
else
# Set ICD folder
export ICD="${ICD:-$WINEPREFIX/icd.d}"
# Copy ICD files
mkdir -p "$ICD"
cp "$APPDIR"/usr/share/vulkan/icd.d/* "$ICD"
# Set VK_ICD_FILENAMES
if [[ "$VENDOR" =~ intel ]]; then
VENDOR_NAME='intel'
elif [[ "$VENDOR" =~ radeon ]] || [[ "$VENDOR" =~ amd ]]; then
VENDOR_NAME='radeon'
fi
if [[ -n "$VENDOR_NAME" ]]; then
export VK_ICD_FILENAMES="$ICD/${VENDOR_NAME}_icd.i686.json:$ICD/${VENDOR_NAME}_icd.x86_64.json"
sed -i "s|/usr|$APPDIR/usr|" "$ICD/${VENDOR_NAME}_icd.i686.json"
sed -i "s|/usr|$APPDIR/usr|" "$ICD/${VENDOR_NAME}_icd.x86_64.json"
fi
# Set LD_LIBRARY_PATH
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$APPDIR/usr/lib/i386-linux-gnu"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$APPDIR/usr/lib/x86_64-linux-gnu"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$APPDIR/usr/lib"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$APPDIR/usr/lib64"
# Causes stack smashing
# export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$APPDIR/runtime/compat/lib/x86_64-linux-gnu"
# export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$APPDIR/runtime/compat/lib/i386-linux-gnu"
fi
echo "VK_ICD_FILENAMES: $VK_ICD_FILENAMES"
echo "LIBGL_DRIVERS_PATH: $LIBGL_DRIVERS_PATH"
# Log vulkan info
if command -v vulkaninfo &>/dev/null; then
vulkaninfo &>"$WINEPREFIX/vulkan.log"
echo "Written vulkan info to $WINEPREFIX/vulkan.log"
fi
# CI_PLACEHOLDER
# Allow the AppImage to be symlinked to e.g., /usr/bin/wineserver
if [ -n "$APPIMAGE" ] ; then
BINARY_NAME=$(basename "$ARGV0")
else
BINARY_NAME=$(basename "$0")
fi
# Check for symlink
if read -r MAIN < <(find "$APPDIR/bin" "$APPDIR/usr/bin" -iname "$BINARY_NAME" -print -quit); then
echo "$BINARY_NAME: '$MAIN $*'"
# Check for binary in usr/bin and bin
elif read -r MAIN < <(find "$APPDIR/bin" "$APPDIR/usr/bin" -iname "$(basename "${1##*-}")" -print -quit); then
shift
echo "$BINARY_NAME: '$MAIN $*'"
# Check for wine binaries in usr/bin and bin
elif read -r MAIN < <(find "$APPDIR/bin" "$APPDIR/usr/bin" \( -iname "wine" -o -iname "wine64" \) -print -quit); then
echo "$BINARY_NAME: '$MAIN $*'"
else
echo "ERR:wine binaries not found"
exit 1
fi
if [[ "$(basename "$MAIN")" == "wine" ]] ||
[[ "$(basename "$MAIN")" == "wine64" ]]; then
LD_TRACE_LOADED_OBJECTS=1 $MAIN --version
fi
HOME="$WINEHOME" "$MAIN" "$@"