Commit 070cb78f authored by Vitaly Lipatov's avatar Vitaly Lipatov

just import winetricks-20201206.tar with rpmgs script

parent a65f09c0
enable=require-variable-braces
......@@ -2,6 +2,9 @@ language: shell
os:
- linux
- osx
arch:
- amd64
- ppc64le
sudo: required
dist: bionic
......@@ -22,7 +25,7 @@ addons:
- devscripts
# Ubuntu notes:
# * ShellCheck is already installed in TravisCI
# * ShellCheck is already installed in TravisCI (but not on ppc64le, see below)
# * bashate is not available on Trusty and we need to install it manually
# macOS note:
# * Homebrew doesn't provide bashate, they don't package things
......@@ -67,6 +70,14 @@ before_install:
fi
done
fi
# Install shellcheck for power job
- |
if [[ "$TRAVIS_CPU_ARCH" == "ppc64le" ]]; then
time sudo apt update;
time sudo apt install -y shellcheck;
fi
# Note if testing on a branch, you can replace this with your desired command, e.g.,:
# script: time sh ./src/winetricks -q comctl32
......
......@@ -16,7 +16,7 @@ https://github.com/Winetricks/winetricks/releases
# Installing
The ```winetricks``` package should be used if it is available and up to date. The package is available in most mainstream (Unix-like) Operating Systems:
* Arch: https://www.archlinux.org/packages/community/any/winetricks/
* Arch: https://www.archlinux.org/packages/multilib/x86_64/winetricks/
* Debian: https://packages.debian.org/sid/winetricks
* Fedora: https://fedoraproject.org/wiki/Wine#Packages
* FreeBSD: https://www.freebsd.org/cgi/ports.cgi?query=winetricks&stype=all
......@@ -42,9 +42,10 @@ Then, for Ubuntu, use a shell script to download the current winetricks script(s
E.g.:
```
#!/bin/sh
# Create and switch to a temporary directory writeable by current user. See:
# https://www.tldp.org/LDP/abs/html/subshells.html
cd "$(mktemp -d)"
cd "$(mktemp -d)" || exit 1
# Use a BASH "here document" to create an updater shell script file.
# See:
......@@ -58,7 +59,7 @@ cat > update_winetricks <<_EOF_SCRIPT
# Create and switch to a temporary directory writeable by current user. See:
# https://www.tldp.org/LDP/abs/html/subshells.html
cd "$(mktemp -d)"
cd "\$(mktemp -d)"
# Download the latest winetricks script (master="latest version") from Github.
wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks
......@@ -77,7 +78,7 @@ wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetric
# Move the winetricks BASH completion script to a standard location for BASH completion modules. See:
# https://www.tldp.org/LDP/abs/html/tabexpansion.html
sudo mv winetricks.bash-completion /usr/share/bash-completion/completions/winetricks
_EOF_SCRIPT
_EOF_SCRIPT
###### create update_winetricks FINISH ########
# Mark the update_winetricks script (we've just written out) as executable. See:
......@@ -104,7 +105,7 @@ cd "$(mktemp -d)"
cat > update_winetricks <<_EOF_SCRIPT
#!/bin/sh
cd "$(mktemp -d)"
cd "\$(mktemp -d)"
wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks
wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks.bash-completion
chmod +x winetricks
......@@ -147,7 +148,7 @@ Description=Run winetricks update script
After=network.target
[Service]
ExecStart=/usr/bin/update_winetricks
ExecStart=/bin/sh /usr/bin/update_winetricks
Type=oneshot
_EOF_SERVICE_UNIT
......
===== apps =====
3m_library 3M Cloud Library (3M Company, 2015) [downloadable]
7zip 7-Zip 19.00 (Igor Pavlov, 2019) [downloadable]
abiword AbiWord 2.8.6 (AbiSource, 2010) [downloadable]
adobe_diged4 Adobe Digital Editions 4.5 (Adobe, 2015) [downloadable]
adobe_diged Adobe Digital Editions 1.7 (Adobe, 2011) [downloadable]
autohotkey AutoHotKey (autohotkey.org, 2010) [downloadable]
......@@ -44,7 +43,7 @@ psdk2003 MS Platform SDK 2003 (Microsoft, 2003) [downloadable]
psdkwin71 MS Windows 7.1 SDK (Microsoft, 2010) [downloadable]
psdkwin7 MS Windows 7 SDK (Microsoft, 2009) [downloadable]
qqintl QQ International Instant Messenger 2.11 (Tencent, 2014) [downloadable]
qq QQ 8.9.1(Chinese chat app) (Tencent, 2017) [downloadable]
qq QQ 8.9.6(Chinese chat app) (Tencent, 2017) [downloadable]
safari Safari (Apple, 2010) [downloadable]
sketchup SketchUp 8 (Google, 2012) [downloadable]
steam Steam (Valve, 2010) [downloadable]
......@@ -57,7 +56,9 @@ vc2005trial MS Visual C++ 2005 Trial (Microsoft, 2005) [downloadabl
vc2008express MS Visual C++ 2008 Express (Microsoft, 2008) [downloadable]
vc2010express MS Visual C++ 2010 Express (Microsoft, 2010) [downloadable]
vlc VLC media player 2.2.1 (VideoLAN, 2015) [downloadable]
vulkansdk Vulkan SDK 1.1.73.0 (developers only) (LunarG, 2018) [downloadable]
vstools2019 MS Visual Studio Build Tools 2019 (Microsoft, 2019) [downloadable]
vulkansdk121412 Vulkan SDK 1.2.141.2 (developers only) (LunarG, 2020) [downloadable]
vulkansdk Vulkan SDK (latest) (developers only) (LunarG, 2018) [downloadable]
winamp Winamp (Radionomy (AOL (Nullsoft)), 2013) [downloadable]
wme9 MS Windows Media Encoder 9 (broken in Wine) (Microsoft, 2002) [downloadable]
===== benchmarks =====
......@@ -80,7 +81,7 @@ binkw32 RAD Game Tools binkw32.dll (RAD Game Tools, Inc., 2000)
cabinet Microsoft cabinet.dll (Microsoft, 2002) [downloadable]
cinepak Cinepak Codec (Radius, 1995) [downloadable]
cmd MS cmd.exe (Microsoft, 2004) [downloadable]
cnc_ddraw Reimplentation of ddraw for CnC games (CnCNet, 2018) [downloadable]
cnc_ddraw Reimplentation of ddraw for CnC games (CnCNet, 2020) [downloadable]
comctl32ocx MS comctl32.ocx and mscomctl.ocx, comctl32 wrappers for VB6 (Microsoft, 2012) [downloadable]
comctl32 MS common controls 5.80 (Microsoft, 2001) [downloadable]
comdlg32ocx Common Dialog ActiveX Control for VB6 (Microsoft, 2012) [downloadable]
......@@ -163,6 +164,7 @@ dotnet46 MS .NET 4.6 (Microsoft, 2015) [downloadable]
dotnet471 MS .NET 4.7.1 (Microsoft, 2017) [downloadable]
dotnet472 MS .NET 4.7.2 (Microsoft, 2018) [downloadable]
dotnet48 MS .NET 4.8 (Microsoft, 2019) [downloadable]
dotnetcore2 MS .NET Core Runtime 2.1 LTS (Microsoft, 2020) [downloadable]
dotnet_verifier MS .NET Verifier (Microsoft, 2016) [downloadable]
dpvoice Microsoft dpvoice dpvvox dpvacm Audio dlls (Microsoft, 2002) [downloadable]
dsdmo MS dsdmo.dll (Microsoft, 2010) [downloadable]
......@@ -220,6 +222,11 @@ dxvk153 Vulkan-based D3D9/D3D10/D3D11 implementation for Linux
dxvk154 Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (1.5.4) (Philip Rebohle, 2017) [downloadable]
dxvk155 Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (1.5.5) (Philip Rebohle, 2017) [downloadable]
dxvk160 Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (1.6) (Philip Rebohle, 2017) [downloadable]
dxvk161 Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (1.6.1) (Philip Rebohle, 2017) [downloadable]
dxvk170 Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (1.7) (Philip Rebohle, 2017) [downloadable]
dxvk171 Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (1.7.1) (Philip Rebohle, 2017) [downloadable]
dxvk172 Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (1.7.2) (Philip Rebohle, 2017) [downloadable]
dxvk173 Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (1.7.3) (Philip Rebohle, 2017) [downloadable]
dxvk_master Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (master) (Philip Rebohle, 2017) [downloadable]
dxvk Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (latest) (Philip Rebohle, 2017) [downloadable]
esent MS Extensible Storage Engine (Microsoft, 2011) [downloadable]
......@@ -233,11 +240,13 @@ faudio1906 FAudio (xaudio reimplementation, with xna support) buil
faudio FAudio (xaudio reimplementation, with xna support) builds for win32 (latest) (Kron4ek, 2019) [downloadable]
ffdshow ffdshow video codecs (doom9 folks, 2010) [downloadable]
filever Microsoft's filever, for dumping file version info (Microsoft, 20??) [downloadable]
flash Flash Player 29 (Adobe, 2018) [downloadable]
flash Flash Player 32 (Adobe, 2020) [downloadable]
galliumnine02 Gallium Nine Standalone (v0.2) (Gallium Nine Team, 2019) [downloadable]
galliumnine03 Gallium Nine Standalone (v0.3) (Gallium Nine Team, 2019) [downloadable]
galliumnine04 Gallium Nine Standalone (v0.4) (Gallium Nine Team, 2019) [downloadable]
galliumnine05 Gallium Nine Standalone (v0.5) (Gallium Nine Team, 2019) [downloadable]
galliumnine06 Gallium Nine Standalone (v0.6) (Gallium Nine Team, 2020) [downloadable]
galliumnine07 Gallium Nine Standalone (v0.7) (Gallium Nine Team, 2020) [downloadable]
galliumnine Gallium Nine Standalone (latest) (Gallium Nine Team, 2019) [downloadable]
gdiplus MS GDI+ (Microsoft, 2011) [downloadable]
gdiplus_winxp MS GDI+ (Microsoft, 2009)
......@@ -256,11 +265,20 @@ itircl MS itircl.dll (Microsoft, 1999) [downloadable]
itss MS itss.dll (Microsoft, 1999) [downloadable]
jet40 MS Jet 4.0 Service Pack 8 (Microsoft, 2003) [downloadable]
l3codecx MPEG Layer-3 Audio Codec for Microsoft DirectShow (Microsoft, 2010) [downloadable]
lavfilters702 LAV Filters 0.70.2 (Hendrik Leppkes, 2017) [downloadable]
lavfilters LAV Filters (Hendrik Leppkes, 2019) [downloadable]
mdac27 Microsoft Data Access Components 2.7 sp1 (Microsoft, 2006) [downloadable]
mdac28 Microsoft Data Access Components 2.8 sp1 (Microsoft, 2005) [downloadable]
mdx Managed DirectX (Microsoft, 2006) [downloadable]
mfc100 Visual C++ 2010 mfc100 library; part of vcrun2010 (Microsoft, 2010) [downloadable]
mfc110 Visual C++ 2012 mfc110 library; part of vcrun2012 (Microsoft, 2012) [downloadable]
mfc120 Visual C++ 2013 mfc120 library; part of vcrun2013 (Microsoft, 2013) [downloadable]
mfc140 Visual C++ 2015 mfc140 library; part of vcrun2015 (Microsoft, 2015) [downloadable]
mfc40 MS mfc40 (Microsoft Foundation Classes from win7sp1) (Microsoft, 1999) [downloadable]
mfc42 Visual C++ 6 SP4 mfc42 library; part of vcrun6 (Microsoft, 2000) [downloadable]
mfc71 Visual C++ 2003 mfc71 library; part of vcrun2003 (Microsoft, 2003) [downloadable]
mfc80 Visual C++ 2005 mfc80 library; part of vcrun2005 (Microsoft, 2011) [downloadable]
mfc90 Visual C++ 2008 mfc90 library; part of vcrun2008 (Microsoft, 2011) [downloadable]
mf MS Media Foundation (Microsoft, 2011) [downloadable]
msacm32 MS ACM32 (Microsoft, 2003) [downloadable]
msasn1 MS ASN1 (Microsoft, 2003) [downloadable]
......@@ -294,6 +312,7 @@ qasf qasf.dll (Microsoft, 2011) [downloadable]
qcap qcap.dll (Microsoft, 2011) [downloadable]
qdvd qdvd.dll (Microsoft, 2011) [downloadable]
qedit qedit.dll (Microsoft, 2011) [downloadable]
quartz_feb2010 quartz.dll (February 2010) (Microsoft, 2010) [downloadable]
quartz quartz.dll (Microsoft, 2011) [downloadable]
quicktime72 Apple QuickTime 7.2 (Apple, 2010) [downloadable]
quicktime76 Apple QuickTime 7.6 (Apple, 2010) [downloadable]
......@@ -322,11 +341,12 @@ vcrun2012 Visual C++ 2012 libraries (atl110,mfc110,mfc110u,msvcp1
vcrun2013 Visual C++ 2013 libraries (mfc120,mfc120u,msvcp120,msvcr120,vcomp120) (Microsoft, 2013) [downloadable]
vcrun2015 Visual C++ 2015 libraries (concrt140.dll,mfc140.dll,mfc140u.dll,mfcm140.dll,mfcm140u.dll,msvcp140.dll,vcamp140.dll,vccorlib140.dll,vcomp140.dll,vcruntime140.dll) (Microsoft, 2015) [downloadable]
vcrun2017 Visual C++ 2017 libraries (concrt140.dll,mfc140.dll,mfc140u.dll,mfcm140.dll,mfcm140u.dll,msvcp140.dll,vcamp140.dll,vccorlib140.dll,vcomp140.dll,vcruntime140.dll) (Microsoft, 2017) [downloadable]
vcrun2019 Visual C++ 2015-2019 libraries (concrt140.dll,mfc140.dll,mfc140u.dll,mfcm140.dll,mfcm140u.dll,msvcp140.dll,vcamp140.dll,vccorlib140.dll,vcomp140.dll,vcruntime140.dll) (Microsoft, 2019) [downloadable]
vcrun2019 Visual C++ 2015-2019 libraries (concrt140.dll,mfc140.dll,mfc140u.dll,mfcm140.dll,mfcm140u.dll,msvcp140.dll,vcamp140.dll,vccorlib140.dll,vcomp140.dll,vcruntime140.dll) (and vcruntime140_1.dll on win64) (Microsoft, 2019) [downloadable]
vcrun6sp6 Visual C++ 6 SP6 libraries (with fixes in ATL and MFC) (Microsoft, 2004) [downloadable]
vcrun6 Visual C++ 6 SP4 libraries (mfc42, msvcp60, msvcirt) (Microsoft, 2000) [downloadable]
vjrun20 MS Visual J# 2.0 SE libraries (requires dotnet20) (Microsoft, 2007) [downloadable]
vulkanrt Vulkan Runtime 1.1.73.0 (LunarG, 2018) [downloadable]
vulkanrt121412 Vulkan Runtime 1.2.141.2 (LunarG, 2020) [downloadable]
vulkanrt Vulkan Runtime (latest) (LunarG, 2020) [downloadable]
webio MS Windows Web I/O (Microsoft, 2011) [downloadable]
windowscodecs MS Windows Imaging Component (Microsoft, 2006) [downloadable]
winhttp MS Windows HTTP Services (Microsoft, 2005) [downloadable]
......@@ -386,6 +406,7 @@ verdana MS Verdana fonts (Microsoft, 2008) [downloadable]
vlgothic VLGothic Japanese fonts (Project Vine / Daisuke Suzuki, 2014) [downloadable]
webdings MS Webdings fonts (Microsoft, 2008) [downloadable]
wenquanyi WenQuanYi CJK font (wenq.org, 2009) [downloadable]
wenquanyizenhei WenQuanYi ZenHei font (wenq.org, 2009) [downloadable]
===== games =====
acreedbro Assassin's Creed Brotherhood (Ubisoft, 2011)
algodoo_demo Algodoo Demo (Algoryx, 2009) [downloadable]
......@@ -533,7 +554,8 @@ native_mdac Override odbc32, odbccp32 and oledb32
native_oleaut32 Override oleaut32
nocrashdialog Disable crash dialog
npm=repack Set NonPower2Mode to repack
nt40 Set windows version to Windows NT 4.0
nt351 Set Windows version to Windows NT 3.51
nt40 Set Windows version to Windows NT 4.0
orm=backbuffer Set OffscreenRenderingMode=backbuffer
orm=fbo Set OffscreenRenderingMode=fbo (default)
psm=0 Set MaxShaderModelPS to 0
......@@ -573,10 +595,12 @@ vsm=1 Set MaxShaderModelVS to 1
vsm=2 Set MaxShaderModelVS to 2
vsm=3 Set MaxShaderModelVS to 3
win10 Set Windows version to Windows 10
win20 Set Windows version to Windows 2.0
win2k3 Set Windows version to Windows 2003
win2k8r2 Set Windows version to Windows 2008 R2
win2k8 Set Windows version to Windows 2008
win2k Set Windows version to Windows 2000
win30 Set Windows version to Windows 3.0
win31 Set Windows version to Windows 3.1
win7 Set Windows version to Windows 7
win81 Set Windows version to Windows 8.1
......@@ -587,5 +611,6 @@ windowmanagerdecorated=n Prevent the window manager from decorating windows
windowmanagerdecorated=y Allow the window manager to decorate windows (default)
windowmanagermanaged=n Prevent the window manager from controlling windows
windowmanagermanaged=y Allow the window manager to control windows (default)
winme Set Windows version to Windows ME
winver= Set Windows version to default (win7)
winxp Set Windows version to Windows XP
3m_library 3M Cloud Library (3M Company, 2015) [downloadable]
7zip 7-Zip 19.00 (Igor Pavlov, 2019) [downloadable]
abiword AbiWord 2.8.6 (AbiSource, 2010) [downloadable]
adobe_diged4 Adobe Digital Editions 4.5 (Adobe, 2015) [downloadable]
adobe_diged Adobe Digital Editions 1.7 (Adobe, 2011) [downloadable]
autohotkey AutoHotKey (autohotkey.org, 2010) [downloadable]
......@@ -43,7 +42,7 @@ psdk2003 MS Platform SDK 2003 (Microsoft, 2003) [downloadable]
psdkwin71 MS Windows 7.1 SDK (Microsoft, 2010) [downloadable]
psdkwin7 MS Windows 7 SDK (Microsoft, 2009) [downloadable]
qqintl QQ International Instant Messenger 2.11 (Tencent, 2014) [downloadable]
qq QQ 8.9.1(Chinese chat app) (Tencent, 2017) [downloadable]
qq QQ 8.9.6(Chinese chat app) (Tencent, 2017) [downloadable]
safari Safari (Apple, 2010) [downloadable]
sketchup SketchUp 8 (Google, 2012) [downloadable]
steam Steam (Valve, 2010) [downloadable]
......@@ -56,6 +55,8 @@ vc2005trial MS Visual C++ 2005 Trial (Microsoft, 2005) [downloadabl
vc2008express MS Visual C++ 2008 Express (Microsoft, 2008) [downloadable]
vc2010express MS Visual C++ 2010 Express (Microsoft, 2010) [downloadable]
vlc VLC media player 2.2.1 (VideoLAN, 2015) [downloadable]
vulkansdk Vulkan SDK 1.1.73.0 (developers only) (LunarG, 2018) [downloadable]
vstools2019 MS Visual Studio Build Tools 2019 (Microsoft, 2019) [downloadable]
vulkansdk121412 Vulkan SDK 1.2.141.2 (developers only) (LunarG, 2020) [downloadable]
vulkansdk Vulkan SDK (latest) (developers only) (LunarG, 2018) [downloadable]
winamp Winamp (Radionomy (AOL (Nullsoft)), 2013) [downloadable]
wme9 MS Windows Media Encoder 9 (broken in Wine) (Microsoft, 2002) [downloadable]
......@@ -8,7 +8,7 @@ binkw32 RAD Game Tools binkw32.dll (RAD Game Tools, Inc., 2000)
cabinet Microsoft cabinet.dll (Microsoft, 2002) [downloadable]
cinepak Cinepak Codec (Radius, 1995) [downloadable]
cmd MS cmd.exe (Microsoft, 2004) [downloadable]
cnc_ddraw Reimplentation of ddraw for CnC games (CnCNet, 2018) [downloadable]
cnc_ddraw Reimplentation of ddraw for CnC games (CnCNet, 2020) [downloadable]
comctl32ocx MS comctl32.ocx and mscomctl.ocx, comctl32 wrappers for VB6 (Microsoft, 2012) [downloadable]
comctl32 MS common controls 5.80 (Microsoft, 2001) [downloadable]
comdlg32ocx Common Dialog ActiveX Control for VB6 (Microsoft, 2012) [downloadable]
......@@ -91,6 +91,7 @@ dotnet46 MS .NET 4.6 (Microsoft, 2015) [downloadable]
dotnet471 MS .NET 4.7.1 (Microsoft, 2017) [downloadable]
dotnet472 MS .NET 4.7.2 (Microsoft, 2018) [downloadable]
dotnet48 MS .NET 4.8 (Microsoft, 2019) [downloadable]
dotnetcore2 MS .NET Core Runtime 2.1 LTS (Microsoft, 2020) [downloadable]
dotnet_verifier MS .NET Verifier (Microsoft, 2016) [downloadable]
dpvoice Microsoft dpvoice dpvvox dpvacm Audio dlls (Microsoft, 2002) [downloadable]
dsdmo MS dsdmo.dll (Microsoft, 2010) [downloadable]
......@@ -148,6 +149,11 @@ dxvk153 Vulkan-based D3D9/D3D10/D3D11 implementation for Linux
dxvk154 Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (1.5.4) (Philip Rebohle, 2017) [downloadable]
dxvk155 Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (1.5.5) (Philip Rebohle, 2017) [downloadable]
dxvk160 Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (1.6) (Philip Rebohle, 2017) [downloadable]
dxvk161 Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (1.6.1) (Philip Rebohle, 2017) [downloadable]
dxvk170 Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (1.7) (Philip Rebohle, 2017) [downloadable]
dxvk171 Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (1.7.1) (Philip Rebohle, 2017) [downloadable]
dxvk172 Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (1.7.2) (Philip Rebohle, 2017) [downloadable]
dxvk173 Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (1.7.3) (Philip Rebohle, 2017) [downloadable]
dxvk_master Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (master) (Philip Rebohle, 2017) [downloadable]
dxvk Vulkan-based D3D9/D3D10/D3D11 implementation for Linux / Wine (latest) (Philip Rebohle, 2017) [downloadable]
esent MS Extensible Storage Engine (Microsoft, 2011) [downloadable]
......@@ -161,11 +167,13 @@ faudio1906 FAudio (xaudio reimplementation, with xna support) buil
faudio FAudio (xaudio reimplementation, with xna support) builds for win32 (latest) (Kron4ek, 2019) [downloadable]
ffdshow ffdshow video codecs (doom9 folks, 2010) [downloadable]
filever Microsoft's filever, for dumping file version info (Microsoft, 20??) [downloadable]
flash Flash Player 29 (Adobe, 2018) [downloadable]
flash Flash Player 32 (Adobe, 2020) [downloadable]
galliumnine02 Gallium Nine Standalone (v0.2) (Gallium Nine Team, 2019) [downloadable]
galliumnine03 Gallium Nine Standalone (v0.3) (Gallium Nine Team, 2019) [downloadable]
galliumnine04 Gallium Nine Standalone (v0.4) (Gallium Nine Team, 2019) [downloadable]
galliumnine05 Gallium Nine Standalone (v0.5) (Gallium Nine Team, 2019) [downloadable]
galliumnine06 Gallium Nine Standalone (v0.6) (Gallium Nine Team, 2020) [downloadable]
galliumnine07 Gallium Nine Standalone (v0.7) (Gallium Nine Team, 2020) [downloadable]
galliumnine Gallium Nine Standalone (latest) (Gallium Nine Team, 2019) [downloadable]
gdiplus MS GDI+ (Microsoft, 2011) [downloadable]
gdiplus_winxp MS GDI+ (Microsoft, 2009)
......@@ -184,11 +192,20 @@ itircl MS itircl.dll (Microsoft, 1999) [downloadable]
itss MS itss.dll (Microsoft, 1999) [downloadable]
jet40 MS Jet 4.0 Service Pack 8 (Microsoft, 2003) [downloadable]
l3codecx MPEG Layer-3 Audio Codec for Microsoft DirectShow (Microsoft, 2010) [downloadable]
lavfilters702 LAV Filters 0.70.2 (Hendrik Leppkes, 2017) [downloadable]
lavfilters LAV Filters (Hendrik Leppkes, 2019) [downloadable]
mdac27 Microsoft Data Access Components 2.7 sp1 (Microsoft, 2006) [downloadable]
mdac28 Microsoft Data Access Components 2.8 sp1 (Microsoft, 2005) [downloadable]
mdx Managed DirectX (Microsoft, 2006) [downloadable]
mfc100 Visual C++ 2010 mfc100 library; part of vcrun2010 (Microsoft, 2010) [downloadable]
mfc110 Visual C++ 2012 mfc110 library; part of vcrun2012 (Microsoft, 2012) [downloadable]
mfc120 Visual C++ 2013 mfc120 library; part of vcrun2013 (Microsoft, 2013) [downloadable]
mfc140 Visual C++ 2015 mfc140 library; part of vcrun2015 (Microsoft, 2015) [downloadable]
mfc40 MS mfc40 (Microsoft Foundation Classes from win7sp1) (Microsoft, 1999) [downloadable]
mfc42 Visual C++ 6 SP4 mfc42 library; part of vcrun6 (Microsoft, 2000) [downloadable]
mfc71 Visual C++ 2003 mfc71 library; part of vcrun2003 (Microsoft, 2003) [downloadable]
mfc80 Visual C++ 2005 mfc80 library; part of vcrun2005 (Microsoft, 2011) [downloadable]
mfc90 Visual C++ 2008 mfc90 library; part of vcrun2008 (Microsoft, 2011) [downloadable]
mf MS Media Foundation (Microsoft, 2011) [downloadable]
msacm32 MS ACM32 (Microsoft, 2003) [downloadable]
msasn1 MS ASN1 (Microsoft, 2003) [downloadable]
......@@ -222,6 +239,7 @@ qasf qasf.dll (Microsoft, 2011) [downloadable]
qcap qcap.dll (Microsoft, 2011) [downloadable]
qdvd qdvd.dll (Microsoft, 2011) [downloadable]
qedit qedit.dll (Microsoft, 2011) [downloadable]
quartz_feb2010 quartz.dll (February 2010) (Microsoft, 2010) [downloadable]
quartz quartz.dll (Microsoft, 2011) [downloadable]
quicktime72 Apple QuickTime 7.2 (Apple, 2010) [downloadable]
quicktime76 Apple QuickTime 7.6 (Apple, 2010) [downloadable]
......@@ -250,11 +268,12 @@ vcrun2012 Visual C++ 2012 libraries (atl110,mfc110,mfc110u,msvcp1
vcrun2013 Visual C++ 2013 libraries (mfc120,mfc120u,msvcp120,msvcr120,vcomp120) (Microsoft, 2013) [downloadable]
vcrun2015 Visual C++ 2015 libraries (concrt140.dll,mfc140.dll,mfc140u.dll,mfcm140.dll,mfcm140u.dll,msvcp140.dll,vcamp140.dll,vccorlib140.dll,vcomp140.dll,vcruntime140.dll) (Microsoft, 2015) [downloadable]
vcrun2017 Visual C++ 2017 libraries (concrt140.dll,mfc140.dll,mfc140u.dll,mfcm140.dll,mfcm140u.dll,msvcp140.dll,vcamp140.dll,vccorlib140.dll,vcomp140.dll,vcruntime140.dll) (Microsoft, 2017) [downloadable]
vcrun2019 Visual C++ 2015-2019 libraries (concrt140.dll,mfc140.dll,mfc140u.dll,mfcm140.dll,mfcm140u.dll,msvcp140.dll,vcamp140.dll,vccorlib140.dll,vcomp140.dll,vcruntime140.dll) (Microsoft, 2019) [downloadable]
vcrun2019 Visual C++ 2015-2019 libraries (concrt140.dll,mfc140.dll,mfc140u.dll,mfcm140.dll,mfcm140u.dll,msvcp140.dll,vcamp140.dll,vccorlib140.dll,vcomp140.dll,vcruntime140.dll) (and vcruntime140_1.dll on win64) (Microsoft, 2019) [downloadable]
vcrun6sp6 Visual C++ 6 SP6 libraries (with fixes in ATL and MFC) (Microsoft, 2004) [downloadable]
vcrun6 Visual C++ 6 SP4 libraries (mfc42, msvcp60, msvcirt) (Microsoft, 2000) [downloadable]
vjrun20 MS Visual J# 2.0 SE libraries (requires dotnet20) (Microsoft, 2007) [downloadable]
vulkanrt Vulkan Runtime 1.1.73.0 (LunarG, 2018) [downloadable]
vulkanrt121412 Vulkan Runtime 1.2.141.2 (LunarG, 2020) [downloadable]
vulkanrt Vulkan Runtime (latest) (LunarG, 2020) [downloadable]
webio MS Windows Web I/O (Microsoft, 2011) [downloadable]
windowscodecs MS Windows Imaging Component (Microsoft, 2006) [downloadable]
winhttp MS Windows HTTP Services (Microsoft, 2005) [downloadable]
......
......@@ -3,7 +3,6 @@
3dmark2001
3m_library
7zip
abiword
adobeair
adobe_diged
adobe_diged4
......@@ -130,6 +129,7 @@ dotnet462
dotnet471
dotnet472
dotnet48
dotnetcore2
dotnet_verifier
dpvoice
dragonage2_demo
......@@ -192,6 +192,11 @@ dxvk153
dxvk154
dxvk155
dxvk160
dxvk161
dxvk170
dxvk171
dxvk172
dxvk173
dxvk_master
emu8086
esent
......@@ -217,6 +222,8 @@ galliumnine02
galliumnine03
galliumnine04
galliumnine05
galliumnine06
galliumnine07
gdiplus
georgia
gfw
......@@ -242,6 +249,8 @@ jet40
kindle
kobo
l3codecx
lavfilters
lavfilters702
liberation
lucida
masseffect2_demo
......@@ -251,8 +260,15 @@ mdac28
mdx
meiryo
mf
mfc100
mfc110
mfc120
mfc140
mfc40
mfc42
mfc71
mfc80
mfc90
mfsx_demo
mingw
mozillabuild
......@@ -311,6 +327,7 @@ qedit
qq
qqintl
quartz
quartz_feb2010
quicktime72
quicktime76
riched20
......@@ -369,11 +386,15 @@ verdana
vjrun20
vlc
vlgothic
vstools2019
vulkanrt
vulkanrt121412
vulkansdk
vulkansdk121412
webdings
webio
wenquanyi
wenquanyizenhei
wglgears
winamp
windowscodecs
......
allfonts All fonts (various, 1998-2010) [downloadable]
andale MS Andale Mono font (Microsoft, 2008) [downloadable]
arial MS Arial / Arial Black fonts (Microsoft, 2008) [downloadable]
baekmuk Baekmuk Korean fonts (Wooderart Inc. / kldp.net, 1999) [downloadable]
calibri MS Calibri font (Microsoft, 2007) [downloadable]
cambria MS Cambria font (Microsoft, 2009) [downloadable]
candara MS Candara font (Microsoft, 2009) [downloadable]
cjkfonts All Chinese, Japanese, Korean fonts and aliases (Various, ) [downloadable]
comicsans MS Comic Sans fonts (Microsoft, 2008) [downloadable]
consolas MS Consolas console font (Microsoft, 2011) [downloadable]
constantia MS Constantia font (Microsoft, 2009) [downloadable]
corbel MS Corbel font (Microsoft, 2009) [downloadable]
corefonts MS Arial, Courier, Times fonts (Microsoft, 2008) [downloadable]
courier MS Courier fonts (Microsoft, 2008) [downloadable]
droid Droid fonts (Ascender Corporation, 2009) [downloadable]
eufonts Updated fonts for Romanian and Bulgarian (Microsoft, 2008) [downloadable]
fakechinese Creates aliases for Chinese fonts using Source Han Sans fonts (Adobe, 2019)
fakejapanese_ipamona Creates aliases for Japanese fonts using IPAMona fonts (Jun Kobayashi, 2008)
fakejapanese Creates aliases for Japanese fonts using Source Han Sans fonts (Adobe, 2019)
fakejapanese_vlgothic Creates aliases for Japanese Meiryo fonts using VLGothic fonts (Project Vine / Daisuke Suzuki, 2014)
fakekorean Creates aliases for Korean fonts using Source Han Sans fonts (Adobe, 2019)
georgia MS Georgia fonts (Microsoft, 2008) [downloadable]
impact MS Impact fonts (Microsoft, 2008) [downloadable]
ipamona IPAMona Japanese fonts (Jun Kobayashi, 2008) [downloadable]
liberation Red Hat Liberation fonts (Mono, Sans, SansNarrow, Serif) (Red Hat, 2008) [downloadable]
lucida MS Lucida Console font (Microsoft, 1998) [downloadable]
meiryo MS Meiryo font (Microsoft, 2009) [downloadable]
opensymbol OpenSymbol fonts (replacement for Wingdings) (OpenOffice.org, 2017) [downloadable]
pptfonts All MS PowerPoint Viewer fonts (various, ) [downloadable]
sourcehansans Source Han Sans fonts (Adobe, 2019) [downloadable]
tahoma MS Tahoma font (not part of corefonts) (Microsoft, 1999) [downloadable]
takao Takao Japanese fonts (Jun Kobayashi, 2010) [downloadable]
times MS Times fonts (Microsoft, 2008) [downloadable]
trebuchet MS Trebuchet fonts (Microsoft, 2008) [downloadable]
uff Ubuntu Font Family (Ubuntu, 2010) [downloadable]
unifont Unifont alternative to Arial Unicode MS (Roman Czyborra / GNU, 2019) [downloadable]
verdana MS Verdana fonts (Microsoft, 2008) [downloadable]
vlgothic VLGothic Japanese fonts (Project Vine / Daisuke Suzuki, 2014) [downloadable]
webdings MS Webdings fonts (Microsoft, 2008) [downloadable]
wenquanyi WenQuanYi CJK font (wenq.org, 2009) [downloadable]
wenquanyizenhei WenQuanYi ZenHei font (wenq.org, 2009) [downloadable]
......@@ -47,7 +47,8 @@ native_mdac Override odbc32, odbccp32 and oledb32
native_oleaut32 Override oleaut32
nocrashdialog Disable crash dialog
npm=repack Set NonPower2Mode to repack
nt40 Set windows version to Windows NT 4.0
nt351 Set Windows version to Windows NT 3.51
nt40 Set Windows version to Windows NT 4.0
orm=backbuffer Set OffscreenRenderingMode=backbuffer
orm=fbo Set OffscreenRenderingMode=fbo (default)
psm=0 Set MaxShaderModelPS to 0
......@@ -87,10 +88,12 @@ vsm=1 Set MaxShaderModelVS to 1
vsm=2 Set MaxShaderModelVS to 2
vsm=3 Set MaxShaderModelVS to 3
win10 Set Windows version to Windows 10
win20 Set Windows version to Windows 2.0
win2k3 Set Windows version to Windows 2003
win2k8r2 Set Windows version to Windows 2008 R2
win2k8 Set Windows version to Windows 2008
win2k Set Windows version to Windows 2000
win30 Set Windows version to Windows 3.0
win31 Set Windows version to Windows 3.1
win7 Set Windows version to Windows 7
win81 Set Windows version to Windows 8.1
......@@ -101,5 +104,6 @@ windowmanagerdecorated=n Prevent the window manager from decorating windows
windowmanagerdecorated=y Allow the window manager to decorate windows (default)
windowmanagermanaged=n Prevent the window manager from controlling windows
windowmanagermanaged=y Allow the window manager to control windows (default)
winme Set Windows version to Windows ME
winver= Set Windows version to default (win7)
winxp Set Windows version to Windows XP
......@@ -23,9 +23,9 @@
set -x
WINE_GIT="${WINE_GIT:-$HOME/wine-git}"
WINE_GIT="${WINE_GIT:-${HOME}/wine-git}"
cd "$WINE_GIT" || exit 125
cd "${WINE_GIT}" || exit 125
git clean -fxd || exit 125
......@@ -39,6 +39,6 @@ fi
"${WINE_GIT}/server/wineserver" -k || true
rm -rf "$HOME/.wine" || exit 125
rm -rf "${HOME}/.wine" || exit 125
WINE="${WINE_GIT}/wine" winetricks -q -v "$@"
......@@ -22,7 +22,7 @@
set -x
CACHE_DIR="${HOME}/.cache/winetricks"
SRC_DIR="$PWD"
SRC_DIR="${PWD}"
winetricks="${SRC_DIR}/src/winetricks"
if [ ! -f README.md ] ; then
......@@ -51,7 +51,7 @@ for dir in "${CACHE_DIR}/"* ; do
for file in "${dir}"/* ; do
# Convert the package:
echo file="${file}"
echo "dir=$dir, package=$package, file=$file"
echo "dir=${dir}, package=${package}, file=${file}"
sha1_file="$(sha1sum "${file}" | awk '{print $1}')"
sha256_file="$(sha256sum "${file}" | awk '{print $1}')"
echo "sha1: ${sha1_file}"
......@@ -67,7 +67,7 @@ for dir in "${CACHE_DIR}/"* ; do
# Test it
wineserver -k || true
rm -rf "$HOME/.wine"
rm -rf "${HOME}/.wine"
# shellcheck disable=SC2115
rm -rf "${CACHE_DIR}/${package}"
......@@ -77,7 +77,7 @@ for dir in "${CACHE_DIR}/"* ; do
test_status="$?"
# Commit it (if it worked):
if [ $test_status = 0 ] ; then
if [ ${test_status} = 0 ] ; then
git commit -m "${package}: convert to sha256" "${winetricks}"
else
git checkout -f
......
......@@ -28,11 +28,11 @@ set -eux
# "us-central1.gce.archive.ubuntu.com" is used by "apt" addon
# (See "Installing APT Packages" in logs), assuming it's fast
UBUNTU_POOL=http://us-central1.gce.archive.ubuntu.com/ubuntu/pool
DEB_BABEL_LOCALEDATA=$UBUNTU_POOL/main/p/python-babel/python-babel-localedata_2.4.0+dfsg.1-2ubuntu1_all.deb
DEB_BABEL=$UBUNTU_POOL/main/p/python-babel/python-babel_2.4.0+dfsg.1-2ubuntu1_all.deb
DEB_BASHATE=$UBUNTU_POOL/universe/p/python-bashate/python-bashate_0.5.1-1_all.deb
DEB_PBR=$UBUNTU_POOL/main/p/python-pbr/python-pbr_3.1.1-3ubuntu3_all.deb
DEB_SIX=$UBUNTU_POOL/main/s/six/python-six_1.11.0-2_all.deb
DEB_BABEL_LOCALEDATA=${UBUNTU_POOL}/main/p/python-babel/python-babel-localedata_2.4.0+dfsg.1-2ubuntu1_all.deb
DEB_BABEL=${UBUNTU_POOL}/main/p/python-babel/python-babel_2.4.0+dfsg.1-2ubuntu1_all.deb
DEB_BASHATE=${UBUNTU_POOL}/universe/p/python-bashate/python-bashate_0.5.1-1_all.deb
DEB_PBR=${UBUNTU_POOL}/main/p/python-pbr/python-pbr_3.1.1-3ubuntu3_all.deb
DEB_SIX=${UBUNTU_POOL}/main/s/six/python-six_1.11.0-2_all.deb
if command -v bashate >/dev/null; then
echo "bashate is already installed."
......@@ -41,19 +41,19 @@ fi
if test -d /Library; then
# macOS: "six" is already installed
curl --remote-name-all $DEB_BABEL_LOCALEDATA $DEB_BABEL $DEB_BASHATE $DEB_PBR
curl --remote-name-all ${DEB_BABEL_LOCALEDATA} ${DEB_BABEL} ${DEB_BASHATE} ${DEB_PBR}
BINDIR=/usr/local/bin
PACKAGESDIR=/Library/Python/2.7/site-packages
else
# Ubuntu
curl --remote-name-all $DEB_BABEL_LOCALEDATA $DEB_BABEL $DEB_BASHATE $DEB_PBR $DEB_SIX
curl --remote-name-all ${DEB_BABEL_LOCALEDATA} ${DEB_BABEL} ${DEB_BASHATE} ${DEB_PBR} ${DEB_SIX}
BINDIR=/usr/bin
PACKAGESDIR=/usr/lib/python2.7/dist-packages
fi
for f in *.deb; do
ar p "$f" data.tar.xz | tar -Jvxf -
ar p "${f}" data.tar.xz | tar -Jvxf -
done
sudo cp -R usr/lib/python2.7/dist-packages/* $PACKAGESDIR/
sudo install -m 755 usr/bin/python2-bashate $BINDIR/bashate
sudo cp -R usr/lib/python2.7/dist-packages/* ${PACKAGESDIR}/
sudo install -m 755 usr/bin/python2-bashate ${BINDIR}/bashate
......@@ -23,15 +23,15 @@ check_deps() {
}
if [ -f src/winetricks ] ; then
TOP="$PWD"
TOP="${PWD}"
shwinetricks="${PWD}/src/winetricks"
elif [ -f ../src/winetricks ] ; then
# realpath isn't available on OSX, use a subshell instead:
TOP="$(cd .. && echo "$PWD")"
TOP="$(cd .. && echo "${PWD}")"
shwinetricks="${TOP}/src/winetricks"
elif [ -f ../../src/winetricks ] ; then
# realpath isn't available on OSX, use a subshell instead:
TOP="$(cd ../.. && echo "$PWD")"
TOP="$(cd ../.. && echo "${PWD}")"
shwinetricks="${TOP}/src/winetricks"
else
echo "Dude, where's my car?!"
......@@ -46,9 +46,9 @@ ftp_microsoft_com=64.4.17.176
w_download() {
# shellcheck disable=SC2016
url="$(echo "$1" | sed -e 's,$ftp_microsoft_com,'$ftp_microsoft_com',;s, ,%20,g')"
urlkey="$(echo "$url" | tr / _)"
echo "$url" > "${datadir}/${urlkey}.url"
url="$(echo "$1" | sed -e 's,$ftp_microsoft_com,'${ftp_microsoft_com}',;s, ,%20,g')"
urlkey="$(echo "${url}" | tr / _)"
echo "${url}" > "${datadir}/${urlkey}.url"
}
# Extract list of URLs from winetricks
......@@ -72,12 +72,12 @@ extract_all() {
show_one() {
urlfile=$1
base=${urlfile%.url}
url="$(cat "$urlfile")"
if grep -E "HTTP.*200|HTTP.*30[0-9]|Content-Length" "$base.log" > /dev/null; then
url="$(cat "${urlfile}")"
if grep -E "HTTP.*200|HTTP.*30[0-9]|Content-Length" "${base}.log" > /dev/null; then
passes=$((passes + 1))
else
echo "BAD $url"
cat "$base.log"
echo "BAD ${url}"
cat "${base}.log"
echo ""
errors=$((errors + 1))
fi
......@@ -85,8 +85,8 @@ show_one() {
# Show full report on most recent crawl
show_all() {
for urlfile in "$datadir"/*.url ; do
show_one "$urlfile"
for urlfile in "${datadir}"/*.url ; do
show_one "${urlfile}"
done
}
......@@ -99,36 +99,36 @@ show_all() {
crawl_one() {
urlfile=$1
base=${urlfile%.url}
url="$(cat "$urlfile")"
url="$(cat "${urlfile}")"
curl --connect-timeout 10 --retry 6 -s -S -I "$url" 2>&1 |
curl --connect-timeout 10 --retry 6 -s -S -I "${url}" 2>&1 |
tr -d '\015' |
grep . |
sort > "$base.log"
sort > "${base}.log"
# more diff-able?
# cat "$base.log" |
# grep -E 'HTTP|Last-Modified:|Content-Length:|ETag:' |
# tr '\012' ' ' |
# sed 's/ Connection:.*//' > "$datadir"/"$urlkey.dat"
# echo "" >> "$base.dat"
show_one "$urlfile"
show_one "${urlfile}"
}
# Fetch all info
# Do fetches in background so slow servers don't hang us
# Print quick feedback as results come in
crawl_all() {
for urlfile in "$datadir"/*.url ; do
url="$(cat "$urlfile")"
echo "Crawling $url"
crawl_one "$urlfile" &
for urlfile in "${datadir}"/*.url ; do
url="$(cat "${urlfile}")"
echo "Crawling ${url}"
crawl_one "${urlfile}" &
sleep 1
done
# Wait for fetches to finish
wait
}
mkdir -p "$datadir"
mkdir -p "${datadir}"
case "$1" in
check-deps)
......@@ -148,9 +148,9 @@ report)
esac
# cleanup
rm -rf "$datadir" url-script-fragment.tmp
echo "Test over, $errors failures, $passes successes."
if test $errors = 0 && test $passes -gt 0; then
rm -rf "${datadir}" url-script-fragment.tmp
echo "Test over, ${errors} failures, ${passes} successes."
if test ${errors} = 0 && test ${passes} -gt 0; then
echo PASS
exit 0
else
......
......@@ -16,10 +16,14 @@ set -e
set -x
nopush=0
# Don't push commits/tags or upload files
# Don't push commits/tags or upload files if --no-push is given:
if [ "$1" = "--no-push" ] ; then
nopush=1
shift
# If we _are_ pushing, we'll need a github token:
elif [ -z "${GITHUB_TOKEN}" ] ; then
echo "--no-push wasn't given, GITHUB_TOKEN must be set in the environment!"
exit 1
fi
# FIXME: If "--no-push" isn't set, above statement dies, not sure how to construct properly to avoid
......@@ -40,11 +44,6 @@ export WINEARCH="win32"
# Needed by the list commands below:
export WINETRICKS_LATEST_VERSION_CHECK="development"
if [ -z "$GITHUB_TOKEN" ] ; then
echo "GITHUB_TOKEN must be set in the environment!"
exit 1
fi
# Make sure we're at top level:
if [ ! -f Makefile ] ; then
echo "Please run this from the top of the source tree"
......@@ -70,11 +69,9 @@ echo "${version}" > files/LATEST
# Update verb lists:
# actual categories
./src/winetricks apps list | sed 's/[[:blank:]]*$//' > files/verbs/apps.txt
./src/winetricks benchmarks list | sed 's/[[:blank:]]*$//' > files/verbs/benchmarks.txt
./src/winetricks dlls list | sed 's/[[:blank:]]*$//' > files/verbs/dlls.txt
./src/winetricks games list | sed 's/[[:blank:]]*$//' > files/verbs/games.txt
./src/winetricks settings list | sed 's/[[:blank:]]*$//' > files/verbs/settings.txt
for category in $(./src/winetricks list); do
./src/winetricks "${category}" list | sed 's/[[:blank:]]*$//' > "files/verbs/${category}.txt"
done
# meta categories
./src/winetricks list-all | sed 's/[[:blank:]]*$//' > files/verbs/all.txt
......@@ -88,7 +85,7 @@ git tag -s -m "winetricks-${version}" "${version}"
sed -i -e "s%WINETRICKS_VERSION=.*%WINETRICKS_VERSION=${version}-next%" src/winetricks
git commit src/winetricks -m "development version bump - ${version}-next"
if [ $nopush = 1 ] ; then
if [ ${nopush} = 1 ] ; then
echo "--no-push used, not pushing commits / tags"
else
git push
......@@ -102,7 +99,7 @@ git archive --prefix="winetricks-${version}/" -o "${tmpdir}/${version}.tar.gz" "
gpg --armor --default-key 0x053F0749 --detach-sign "${tmpdir}/${version}.tar.gz"
# upload the detached signature to github:
if [ $nopush = 1 ] ; then
if [ ${nopush} = 1 ] ; then
echo "--no-push used, not uploading signature file"
else
python3 src/github-api-releases.py "${tmpdir}/${version}.tar.gz.asc" Winetricks winetricks "${version}"
......
......@@ -23,7 +23,7 @@ rm -f /tmp/allfiles.txt
for dir; do
(
cd "$dir/drive_c"
cd "${dir}/drive_c"
# FIXME: don't assume there are no ='s in filenames, e.g. rewrite in perl
find . -type f | tr ' ' '=' | grep -E -iv 'tmp|temp|installer|NativeImages' | sort > ../files.txt
cat ../files.txt >> /tmp/allfiles.txt
......@@ -36,9 +36,9 @@ sort < /tmp/allfiles.txt | uniq -c | awk '$1 == 1 {print $2}' > /tmp/uniqfiles.t
# Associate them with the verb they came from
for dir; do
(
cd "$dir"
cd "${dir}"
# Undo the space-to-= transformation, too
grep -F -f /tmp/uniqfiles.txt < files.txt | tr '=' ' ' > uniqfiles.txt
)
echo "$dir/uniqfiles.txt"
echo "${dir}/uniqfiles.txt"
done
This source diff could not be displayed because it is too large. You can view the blob instead.
.\" -*- nroff -*-
.TH WINETRICKS 1 "April 2020" "Winetricks 20200412" "Wine Package Manager"
.TH WINETRICKS 1 "December 2020" "Winetricks 20201206" "Wine Package Manager"
.SH NAME
winetricks \- manage virtual Windows environments using Wine
.SH SYNOPSIS
......@@ -89,6 +89,14 @@ games list
list verbs in category 'games'
.TP
.B
fonts list
list verbs in category 'fonts'
.TP
.B
settings list
list verbs in category 'settings'
.TP
.B
list
list categories
.TP
......@@ -109,12 +117,18 @@ list-installed
list already-installed verbs
.TP
.B
arch=32|64
create wineprefix with 32 or 64 bit, this option must be
given before prefix=foobar and will not work in case of
the default wineprefix.
.TP
.B
prefix=foobar
select WINEPREFIX=$HOME/.local/share/wineprefixes/foobar
.TP
.B
settings list
list verbs in category 'settings'
annihilate
Delete ALL DATA AND APPLICATIONS INSIDE THIS WINEPREFIX
.PP
.SH EXAMPLES
......
......@@ -24,8 +24,8 @@ w_die() {
w_try() {
"$@"
status=$?
if test $status -ne 0; then
w_die "Note: command $* returned status $status. Aborting."
if test ${status} -ne 0; then
w_die "Note: command $* returned status ${status}. Aborting."
fi
}
......@@ -47,14 +47,14 @@ trap 'rm -fr "$temp"' EXIT
# tests using bashate
test_bashate() {
if [ ! -x "$(command -v bashate 2>/dev/null)" ] && [ "$TRAVIS_OS_NAME" = "osx" ]; then
if [ ! -x "$(command -v bashate 2>/dev/null)" ] && [ "${TRAVIS_OS_NAME}" = "osx" ]; then
echo "On OSX and bashate not available, skipping."
return
else
bashate="$(command -v bashate)"
#echo "======================== Begin bashate version info ==========================="
"$bashate" --help > /dev/null || w_die "bashate must be installed!"
"${bashate}" --help > /dev/null || w_die "bashate must be installed!"
## bashate doesn't have a --version option (as of bashate-0.3.1)
#"$bashate" --version
#echo "======================== End bashate version info ==========================="
......@@ -65,21 +65,21 @@ test_bashate() {
# E010=do/while same line (in some embedded perl in winetricks)
# E044=Use [[ for non-POSIX comparisions
echo "Checking ${shellscript} with bashate:"
w_try "$bashate" -i E006,E010,E044 "${shellscript}"
w_try "${bashate}" -i E006,E010,E044 "${shellscript}"
fi
}
# tests using checkbashisms
test_checkbashisms() {
if [ ! -x "$(command -v checkbashisms 2>/dev/null)" ] && [ "$TRAVIS_OS_NAME" = "osx" ]; then
if [ ! -x "$(command -v checkbashisms 2>/dev/null)" ] && [ "${TRAVIS_OS_NAME}" = "osx" ]; then
echo "On OSX and checkbashisms not available, skipping."
return
else
checkbashisms="$(command -v checkbashisms)"
echo "======================== Begin checkbashisms version info ==========================="
"$checkbashisms" --help > /dev/null || w_die "checkbashisms must be installed!"
"$checkbashisms" --version
"${checkbashisms}" --help > /dev/null || w_die "checkbashisms must be installed!"
"${checkbashisms}" --version
echo "======================== End checkbashisms version info ==========================="
# Check if checkbashisms supports `command -v`. If not, warn, or if on travis, patch it:
......@@ -88,12 +88,12 @@ test_checkbashisms() {
command -v grep
_EOF
if ! "$checkbashisms" --posix "${temp}/command.sh"; then
if ! "${checkbashisms}" --posix "${temp}/command.sh"; then
echo "Use a sed expression, to add checkbashisms support for 'command -v', based on the patch from https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=733511"
echo "Creating a copy of the checkbashisms script, in ${temp}, to workaround this issue"
# /usr/bin/ (or /usr/local/bin on OSX) isn't writable on Travis, so we have to patch it in /tmp and use that:
(
sed -e '/qr'\''command\\s+\-\[\^p\]\\s'\''/ { ' -e 's|\[\^p\]|[^pvV]|' -e 's| \-p>| -p/-v/-V>|' -e '}' "$checkbashisms" > "${temp}/checkbashisms.patched" && \
sed -e '/qr'\''command\\s+\-\[\^p\]\\s'\''/ { ' -e 's|\[\^p\]|[^pvV]|' -e 's| \-p>| -p/-v/-V>|' -e '}' "${checkbashisms}" > "${temp}/checkbashisms.patched" && \
chmod +x "${temp}/checkbashisms.patched"
)
checkbashisms="${temp}/checkbashisms.patched"
......@@ -109,19 +109,19 @@ sleep 5 & spid="$!"
kill -HUP \$spid
_EOF
if ! "$checkbashisms" --posix "${temp}/kill.sh"; then
if ! "${checkbashisms}" --posix "${temp}/kill.sh"; then
echo "Disabling the kill -signal warning"
echo "Creating a copy of the checkbashisms script, in ${temp}, to workaround this issue"
# /usr/bin/ (or /usr/local/bin on OSX) isn't writable on Travis, so we have to patch it in /tmp and use that:
(
sed -e '/bashisms.*kill/d' "$checkbashisms" > "${temp}/checkbashisms.patched.kill" && \
sed -e '/bashisms.*kill/d' "${checkbashisms}" > "${temp}/checkbashisms.patched.kill" && \
chmod +x "${temp}/checkbashisms.patched.kill"
)
checkbashisms="${temp}/checkbashisms.patched.kill"
fi
echo "Checking ${shellscript} for bashisms:"
w_try "$checkbashisms" --posix "${shellscript}"
w_try "${checkbashisms}" --posix "${shellscript}"
fi
}
......@@ -152,19 +152,19 @@ test_formatting() {
# tests using shellcheck
test_shellcheck() {
if [ ! -x "$(command -v shellcheck 2>/dev/null)" ] && [ "$TRAVIS_OS_NAME" = "osx" ]; then
if [ ! -x "$(command -v shellcheck 2>/dev/null)" ] && [ "${TRAVIS_OS_NAME}" = "osx" ]; then
echo "On OSX and shellcheck not available, skipping."
return
else
shellcheck="$(command -v shellcheck)"
echo "======================== Begin shellcheck version info ==========================="
"$shellcheck" --version > /dev/null || w_die "shellcheck must be installed!"
"$shellcheck" --version
"${shellcheck}" --version > /dev/null || w_die "shellcheck must be installed!"
"${shellcheck}" --version
echo "======================== End shellcheck version info ==========================="
echo "Checking ${shellscript} with shellcheck:"
w_try "$shellcheck" -s sh "${shellscript}"
w_try "${shellcheck}" -s sh "${shellscript}"
fi
}
......@@ -186,7 +186,7 @@ test_travis_yml() {
else
yq="$(command -v yq)"
if [ -n "$yq" ]; then
if [ -n "${yq}" ]; then
echo "yq available, validating .travis.yml"
yq . .travis.yml || true
else
......@@ -220,7 +220,7 @@ main() {
test_travis_yml
# Generic shellscript checks:
for shellscript in $files_to_check; do
for shellscript in ${files_to_check}; do
test_formatting
test_bashate
test_checkbashisms
......
......@@ -19,14 +19,14 @@ outdir="$(mktemp -d "${TMPDIR:-/tmp}/winetricks-test.XXXXXXXX")"
# Note: skips dotnet20sdk, which is broken AF
dotnet_verbs="$(./src/winetricks dlls list | grep ^dotnet | grep -v -e sdk -e verifier | cut -d ' ' -f1)"
for verb1 in $dotnet_verbs; do
for verb2 in $dotnet_verbs; do
if [ "$verb1" = "$verb2" ]; then
for verb1 in ${dotnet_verbs}; do
for verb2 in ${dotnet_verbs}; do
if [ "${verb1}" = "${verb2}" ]; then
continue
fi
combo="${verb1}-${verb2}"
case "$combo" in
case "${combo}" in
dotnet11*-dotnet20|dotnet11*-dotnet30*|dotnet11*-dotnet35*)
echo "Skipping, has a popup that needs to be automated away in -q mode (but fails anyway, so not worth it)";
echo "${combo} skipped" | tee -a "${outdir}/statuslog.txt";
......@@ -36,11 +36,11 @@ for verb1 in $dotnet_verbs; do
export WINEPREFIX="${outdir}/prefix-${combo}"
wineserver -k
./src/winetricks -q --force --verify "$verb1" "$verb2" 2>&1 | tee -a "${outdir}/${combo}.txt"
./src/winetricks -q --force --verify "${verb1}" "${verb2}" 2>&1 | tee -a "${outdir}/${combo}.txt"
status="$?"
echo "$combo exited $status" 2>&1 | tee -a "${outdir}/${combo}.txt"
echo "$combo exited $status" 2>&1 | tee -a "${outdir}/statuslog.txt"
echo "${combo} exited ${status}" 2>&1 | tee -a "${outdir}/${combo}.txt"
echo "${combo} exited ${status}" 2>&1 | tee -a "${outdir}/statuslog.txt"
rm -rf "$WINEPREFIX"
rm -rf "${WINEPREFIX}"
done
done
......@@ -18,23 +18,23 @@
# automate non -q verbs with autohotkey
# Override this if you want to put the work area on a different disk
WINE_PREFIXES=${WINE_PREFIXES:-$HOME/winetrickstest-prefixes}
XDG_CACHE_HOME="${XDG_CACHE_HOME:-$HOME/.cache}"
cache="$XDG_CACHE_HOME/winetricks"
WINE_PREFIXES=${WINE_PREFIXES:-${HOME}/winetrickstest-prefixes}
XDG_CACHE_HOME="${XDG_CACHE_HOME:-${HOME}/.cache}"
cache="${XDG_CACHE_HOME}/winetricks"
#set -e
set -x
if [ -f src/winetricks ] ; then
TOP="$PWD"
TOP="${PWD}"
shwinetricks="${PWD}/src/winetricks"
elif [ -f ../src/winetricks ] ; then
# realpath isn't available on OSX, use a subshell instead:
TOP="$(cd .. && echo "$PWD")"
TOP="$(cd .. && echo "${PWD}")"
shwinetricks="${TOP}/src/winetricks"
elif [ -f ../../src/winetricks ] ; then
# realpath isn't available on OSX, use a subshell instead:
TOP="$(cd ../.. && echo "$PWD")"
TOP="$(cd ../.. && echo "${PWD}")"
shwinetricks="${TOP}/src/winetricks"
else
echo "Running from unknown directory. Exiting"
......@@ -58,10 +58,10 @@ if [ "$1" = "check-deps" ] ; then
# Using an environmental variable rather than a CLI option
# so it doesn't need extra handling/targets in Makefile
elif [ -n "$WINETRICKS_ENABLE_KCOV" ] ; then
elif [ -n "${WINETRICKS_ENABLE_KCOV}" ] ; then
KCOV_RESULTS="${outputdir}/kcov-results"
rm -rf "$KCOV_RESULTS"
mkdir -p "$KCOV_RESULTS"
rm -rf "${KCOV_RESULTS}"
mkdir -p "${KCOV_RESULTS}"
# kcov --kcov-options output-dir testscript --test-script-args
# I think kcov lets you append results, if not we may have to use separate for each invocation then combine at the end
......@@ -70,7 +70,7 @@ elif [ -n "$WINETRICKS_ENABLE_KCOV" ] ; then
# Previously, winetricks-test used `$WINETRICKS`. That fails for kcov, which
# then tracks bash itself and not winetricks. `${shwinetricks}` works fine.
WINETRICKS="kcov --configure=bash-use-basic-parser=1 $KCOV_RESULTS \"${shwinetricks}\""
WINETRICKS="kcov --configure=bash-use-basic-parser=1 ${KCOV_RESULTS} \"${shwinetricks}\""
#WINETRICKS="kcov --configure=bash-use-basic-parser=1 $KCOV_RESULTS-$(date +%k-%M-%S) \"${shwinetricks}\""
else
WINETRICKS="${shwinetricks}"
......@@ -87,40 +87,42 @@ export WINETRICKS_SUPER_QUIET
# verbs known to not work in -q mode yet
BLACKLIST="dx8sdk|kde|psdk2003|psdkwin7"
# verbs that hang in -q because of simple problem we should work around soon
BLACKLIST="$BLACKLIST|vc2005trial"
BLACKLIST="${BLACKLIST}|vc2005trial"
# verbs that are too slow
BLACKLIST="$BLACKLIST|bfbc2|dxsdk_nov2006|dxsdk_jun2010"
# steam verbs I don't have
BLACKLIST="$BLACKLIST|borderlands|supermeatboy|trine"
# broken http://bugs.winehq.org/show_bug.cgi?id=26411:
BLACKLIST="$BLACKLIST|mfsxde|mfsx_demo"
# hang lately, probably ui changes in install process
BLACKLIST="$BLACKLIST|bioshock2"
BLACKLIST="${BLACKLIST}|dxsdk_nov2006|dxsdk_jun2010"
# broken/flaky, http://bugs.winehq.org/show_bug.cgi?id=26016
BLACKLIST="$BLACKLIST|xmllite"
BLACKLIST="${BLACKLIST}|xmllite"
# redundant metaverbs
BLACKLIST="$BLACKLIST|allcodecs"
BLACKLIST="${BLACKLIST}|allcodecs|allfonts|cjkfonts|pptfonts"
# https://bugs.winehq.org/show_bug.cgi?id=16876
BLACKLIST="$BLACKLIST|wmi"
BLACKLIST="${BLACKLIST}|wmi"
# These break in combination with sandbox, https://bugs.winehq.org/show_bug.cgi?id=49421
BLACKLIST="${BLACKLIST}|ffdshow|python26|python27"
# Also sandbox, but different bug, https://bugs.winehq.org/show_bug.cgi?id=49550
BLACKLIST="${BLACKLIST}|dirac"
# https://bugs.winehq.org/show_bug.cgi?id=50061 / https://github.com/Winetricks/winetricks/issues/1644
BLACKLIST="${BLACKLIST}|quicktime76"
# https://github.com/Winetricks/winetricks/issues/1638
BLACKLIST="${BLACKLIST}|dxvk_master"
# Travis CI is apparently blocking archive.org, which breaks several verbs:
# https://github.com/travis-ci/travis-ci/issues/6798
# Blacklist those verbs on those hosts:
# FIXME: setup another test target for torify, use it to d/l these?
ARCHIVE_ORG_BLACKLIST="atmlib|avifil32|cabinet|cmd|comctl32ocx|comdgl32ocx|gmdls|mdac27|mfc40|msflxgrd|mshflxgd"
ARCHIVE_ORG_BLACKLIST="$ARCHIVE_ORG_BLACKLIST|msls31ms|msmask|msscript|msxml3|pdh|pngfilt|riched30"
ARCHIVE_ORG_BLACKLIST="$ARCHIVE_ORG_BLACKLIST|richtx32|secur32|tabctl32|usp10|"
ARCHIVE_ORG_BLACKLIST="${ARCHIVE_ORG_BLACKLIST}|msls31ms|msmask|msscript|msxml3|pdh|pngfilt|riched30"
ARCHIVE_ORG_BLACKLIST="${ARCHIVE_ORG_BLACKLIST}|richtx32|secur32|tabctl32|usp10|"
# See https://docs.travis-ci.com/user/environment-variables/#Default-Environment-Variables
if [ "$TRAVIS" = "true" ] ; then
BLACKLIST="$ARCHIVE_ORG_BLACKLIST|$BLACKLIST"
if [ "${TRAVIS}" = "true" ] ; then
BLACKLIST="${ARCHIVE_ORG_BLACKLIST}|${BLACKLIST}"
fi
# Tests that fail under Xvfb
XVFB_DOTNET_BLACKLIST="dotnet11|dotnet11sp1|dotnet20|dotnet20sdk|dotnet20sp1|dotnet30|dotnet40|dotnet46"
XVFB_BLACKLIST="$XVFB_DOTNET_BLACKLIST|adobeair|binkw32|dirac|directmusic|dxdiag|flash|gdiplus_winxp|gfw|ie6|ie7|ie8"
XVFB_BLACKLIST="$XVFB_BLACKLIST|jet40|nuget|quicktime72|vcrun2008|vcrun2010|vcrun2012|vcrun2013|vcrun2015"
XVFB_BLACKLIST="$XVFB_BLACKLIST|vjrun20|windowscodecs|wmi|wmp9|wmp10|wsh56js|wsh56vb|xmllite|xna31|xna40|xvid"
XVFB_BLACKLIST="${XVFB_DOTNET_BLACKLIST}|adobeair|binkw32|dirac|directmusic|dxdiag|flash|gdiplus_winxp|gfw|ie6|ie7|ie8"
XVFB_BLACKLIST="${XVFB_BLACKLIST}|jet40|nuget|quicktime72|vcrun2008|vcrun2010|vcrun2012|vcrun2013|vcrun2015"
XVFB_BLACKLIST="${XVFB_BLACKLIST}|vjrun20|windowscodecs|wmi|wmp9|wmp10|wsh56js|wsh56vb|xmllite|xna31|xna40|xvid"
failed_verbs=""
passes=0
......@@ -132,11 +134,11 @@ skips=0
# middle of a two day run.
check_deps() {
for tool in time cabextract; do
command -v "$tool" >/dev/null 2>&1
command -v "${tool}" >/dev/null 2>&1
ret=$?
if [ ! $ret -eq 0 ] ; then
echo "Please install $tool."
if [ ! ${ret} -eq 0 ] ; then
echo "Please install ${tool}."
exit 1
fi
done
......@@ -147,19 +149,29 @@ fail()
echo "FAIL: $*"
failed_verbs="${failed_verbs}|$*"
errors=$((errors + 1))
w_prefix_failed=1
status
}
pass()
{
echo "PASS: $*"
passes=$((passes + 1))
status
}
skip()
{
echo "SKIP: $*"
skipped_verbs="${skipped_verbs}|$*"
skips=$((skips + 1))
was_skipped=1
status
}
status()
{
echo "Test in progress. Current status: ${errors} failures, ${passes} successes, ${skips} skipped."
}
w_die()
......@@ -168,6 +180,25 @@ w_die()
exit 1
}
w_remove_prefix()
{
if [ -n "${WINEPREFIX}" ]; then
# Cleanup the prefix, unless $W_OPT_NOCLEAN is set to 1 (to match winetricks)
# AND if there weren't failures to debug:
if [ "${W_OPT_NOCLEAN}" = "1" ]; then
echo "W_OPT_NOCLEAN set to 1, not removing wineprefix ${WINEPREFIX}"
elif [ "${w_prefix_failed}" = "1" ]; then
echo "w_prefix_failed set to 1, not removing wineprefix ${WINEPREFIX}"
elif [ -n "${w_remove_prefix_disable}" ]; then
# Don't remove the prefix yet, as there will be some further checks on the same prefix
echo "prefix removed disabled, not removing wineprefix ${WINEPREFIX}"
else
echo "Removing wineprefix ${WINEPREFIX}"
rm -rf "${WINEPREFIX}"
fi
fi
}
w_time()
{
# OSX time doesn't support -o, so try it first:
......@@ -178,15 +209,15 @@ w_time()
fi
}
case "$LANG" in
case "${LANG}" in
""|"C") echo "Some games won't install in the Posix locale; doing 'export LANG=en_US.UTF-8'" ; export LANG=en_US.UTF-8;;
esac
case "$OS" in
case "${OS}" in
"Windows_NT")
# Mostly unimplemented...
# Cheezy fix for getting rid of double slashes when running cygwin in wine
case "$HOME" in
case "${HOME}" in
/) HOME="" ;;
esac
......@@ -201,10 +232,10 @@ case "$OS" in
# If wineserver is from wine-development set WINE to wine-development.
# FIXME: get packagers to put wineserver on the path.
for x in \
"$WINESERVER" \
"${WINESERVER}" \
"${WINE}server" \
"$(command -v wineserver 2> /dev/null)" \
"$(dirname $WINE)/server/wineserver" \
"$(dirname "${WINE}")/server/wineserver" \
/usr/lib/wine/wineserver \
/usr/lib/i386-kfreebsd-gnu/wine/wineserver \
/usr/lib/i386-linux-gnu/wine/wineserver \
......@@ -218,8 +249,8 @@ case "$OS" in
/usr/lib/powerpc-linux-gnu/wine-development/wineserver \
/usr/lib/x86_64-linux-gnu/wine-development/wineserver \
file-not-found; do
if [ -x "$x" ] ; then
case "$x" in
if [ -x "${x}" ] ; then
case "${x}" in
/usr/lib/*/wine-development/wineserver)
if [ -x /usr/bin/wine-development ] ; then
WINE="/usr/bin/wine-development"
......@@ -230,23 +261,45 @@ case "$OS" in
fi
done
case "$x" in
case "${x}" in
file-not-found) w_die "wineserver not found!" ;;
*) WINESERVER="$x" ;;
*) WINESERVER="${x}" ;;
esac
;;
esac
test_speed()
{
speed_test="$1"
case "${speed_test}" in
# No wine/WINEPREFIX needed:
list|list-download|list-cached) export _W_wine_not_needed=1;;
# Needs a WINEPREFIX, with some things installed (need at least 5, see list_lines below):
# Note: not using test_command here because that would forcefully override WINEPREFIX
list-installed)
export WINEPREFIX="${WINE_PREFIXES}/test_speed-list-installed"
w_remove_prefix_disable=1
# shellcheck disable=SC2086
${XVFB} ${WINETRICKS} good good good good good || fail "\'${XVFB} ${WINETRICKS} good good good good good\' failed"
;;
*) echo "error: unknown test_speed command '${speed_test}'"; exit 1;;
esac
# shellcheck disable=SC2086
if ! w_time $XVFB $WINETRICKS nocrashdialog "$1" > "${outputdir}/foo.log"; then
if ! w_time ${XVFB} ${WINETRICKS} "$1" > "${outputdir}/foo.log"; then
fail "winetricks $1 returned status $?"
else
pass "winetricks $1 returned status $?"
fi
# shellcheck disable=SC2046
if [ $(wc -l < "${outputdir}/foo.log") -lt 5 ] ; then
fail "winetricks $1 returned too few lines"
list_lines="$(wc -l < "${outputdir}/foo.log")"
if [ "${list_lines}" -lt 5 ] ; then
fail "winetricks $1 returned ${list_lines} lines, expected at least 5"
else
pass "winetricks $1 returned ${list_lines} lines"
fi
if [ ! -f time.log ] ; then
......@@ -256,12 +309,17 @@ test_speed()
seconds=$(awk '/real/ {print $2}' < "${outputdir}/time.log" | sed 's/\..*//')
fi
echo "test_speed: winetricks $1 took $seconds seconds"
echo "test_speed: winetricks $1 took ${seconds} seconds"
# Longest runtime as of 11 Dec 2010 is 5 seconds on an e8400 with cygwin
# shellcheck disable=SC2086
if [ $seconds -gt 7 ] ; then
fail "test_speed: winetricks $1 took $seconds seconds"
if [ "${seconds}" -gt 7 ] ; then
fail "test_speed: winetricks $1 took ${seconds} seconds"
else
pass "test_speed: winetricks $1 took ${seconds} seconds"
fi
unset _W_wine_not_needed
unset w_remove_prefix_disable
w_remove_prefix
}
# test win32 7-zip fallback
......@@ -295,35 +353,35 @@ test_app()
# Watch transient disk space
DF_START=$(total_df)
if [ -d "$W_CACHE/$app" ] ; then
DU_CACHE_START=$(du -s "$W_CACHE/$app" | awk '{print $1}')
if [ -d "${W_CACHE}/${app}" ] ; then
DU_CACHE_START=$(du -s "${W_CACHE}/${app}" | awk '{print $1}')
else
DU_CACHE_START=0
fi
touch "${outputdir}/df-daemon"
(set +x; while test -f "${outputdir}/df-daemon"; do total_df; sleep 1; done ) > "${outputdir}/df-during.log" &
test_command --verify "$app"
test_command --verify "${app}"
if [ $was_skipped = 1 ]; then
skip "post-install file check for skipped verb $app"
if [ ${was_skipped} = 1 ]; then
skip "post-install file check for skipped verb ${app}"
else
# Post install:
# Don't check whether metaverbs are installed
case "$app" in
case "${app}" in
allcodecs) ;;
*)
# if test was skipped because of wrong arch, don't check for it:
if [ "$archskip" = "1" ]; then
skip "$app was skipped because of wrong prefix arch!"
if [ "${archskip}" = "1" ]; then
skip "${app} was skipped because of wrong prefix arch!"
return
fi
# no xvfb needed
"${shwinetricks}" -q list-installed > "${outputdir}/list-installed.out"
DISPLAY="" "${shwinetricks}" -q list-installed > "${outputdir}/list-installed.out"
if ! grep -w "$app" "${outputdir}/list-installed.out"; then
fail "test app $app not installed after install?"
if ! grep -w "${app}" "${outputdir}/list-installed.out"; then
fail "test app ${app} not installed after install?"
fi
;;
......@@ -337,20 +395,14 @@ test_app()
DF_MIN=$(awk '{ if (min == "" || $1 < min) min=$1; } END {printf "%d\n", min}' < "${outputdir}/df-during.log" )
DF_DIFF=$((DF_START - DF_MIN))
TOTAL=$((DF_DIFF + DU_CACHE_START))
echo "test_app: ${app}: max_disk $TOTAL blocks."
echo "test_app: ${app}: max_disk ${TOTAL} blocks."
TOTAL_MB=$((TOTAL / 1024))
mkdir -p "${outputdir}/measurements"
echo "${app}:size_MB=${TOTAL_MB},time_sec=${seconds}" >> "${outputdir}/measurements/$app.dat"
# Cleanup the prefix, unless $W_OPT_NOCLEAN is set to 1 (to match winetricks):
if [ "$W_OPT_NOCLEAN" = "1" ]; then
echo "W_OPT_NOCLEAN set to 1, not removing wineprefix $WINEPREFIX"
else
echo "Removing wineprefix $WINEPREFIX"
# FIXME: for some reason, steam doesn't clean up. $WINESERVER -k doesn't help either
rm -rf "$WINEPREFIX"
fi
echo "${app}:size_MB=${TOTAL_MB},time_sec=${seconds}" >> "${outputdir}/measurements/${app}.dat"
fi
unset w_remove_prefix_disable
w_remove_prefix
}
test_command()
......@@ -358,58 +410,77 @@ test_command()
archskip=0
command="$*"
# will be set by fail() if a prefix has a failure, so that w_remove_prefix() doesn't remove the prefix
unset w_prefix_failed
# Hate to hardcode this, but not a good way to set it from the winetricks side:
case "${command}" in
"--verify bad") EXPECT_FAIL="yes";;
*) :;;
esac
# If _W_wine_not_needed is set, don't fail if wine is missing (used by test_listing())
# This previously changed spaces to hyphens. Going back to spaces so we test WINEPREFIXes
# with special characters, to prevent issues like https://github.com/Winetricks/winetricks/issues/995
export WINEPREFIX="$WINE_PREFIXES/${command}"
export WINEPREFIX="${WINE_PREFIXES}/${command}"
#DRIVE_C="$WINEPREFIX/dosdevices/c:"
# always use a clean $WINEPREFIX
if [ -d "$WINEPREFIX" ] ; then
rm -rf "$WINEPREFIX"
if [ -d "${WINEPREFIX}" ] ; then
rm -rf "${WINEPREFIX}"
fi
# Isolate us from the user's home directory
# shellcheck disable=SC2086
if [ -z "$_W_wine_not_needed" ]; then
$XVFB $WINETRICKS sandbox || fail "\'$XVFB $WINETRICKS sandbox\' failed"
echo "Installing $command"
$XVFB $WINETRICKS --no-isolate -q nocrashdialog "$@"
if [ -z "${_W_wine_not_needed}" ]; then
# First, make the prefix (without $DISPLAY set).
# This reduces the amount of GUI activity (unless the prefix actually makes a window, which most tests don't).
DISPLAY="" "${WINE}" wineboot || fail "\'${WINE} wineboot\' failed"
"${WINESERVER}" -w
${XVFB} ${WINETRICKS} sandbox || fail "\'${XVFB} ${WINETRICKS} sandbox\' failed"
"${WINESERVER}" -w
echo "Installing ${command}"
${XVFB} ${WINETRICKS} --no-isolate -q nocrashdialog "$@"
return=$?
else
$XVFB $WINETRICKS --no-isolate -q "$@"
DISPLAY="" ${XVFB} ${WINETRICKS} --no-isolate -q "$@"
return=$?
fi
if [ -d "$WINEPREFIX/drive_c/windows/syswow64" ]; then
if [ -d "${WINEPREFIX}/drive_c/windows/syswow64" ]; then
WINEARCH="win64"
else
elif [ -d "${WINEPREFIX}/drive_c/windows/system32" ]; then
WINEARCH="win32"
else
# This happens during, e.g., `winetricks apps list`.
echo "No WINEPREFIX found, not setting WINEARCH"
fi
if [ "$return" = "32" ] && [ "$WINEARCH" != "win32" ]; then
skip "$command is not supported on $WINEARCH, requires win32"
if [ "${return}" = "32" ] && [ "${WINEARCH}" != "win32" ]; then
skip "${command} is not supported on ${WINEARCH}, requires win32"
archskip=1
return
elif [ "$return" = "64" ] && [ "$WINEARCH" != "win64" ]; then
skip "$command is not supported on $WINEARCH, requires win64"
elif [ "${return}" = "64" ] && [ "${WINEARCH}" != "win64" ]; then
skip "${command} is not supported on ${WINEARCH}, requires win64"
archskip=1
return
elif [ "$return" = "99" ]; then
skip "$command is known to be broken on this wine version, ignoring"
elif [ "${return}" = "99" ]; then
skip "${command} is known to be broken on this wine version, ignoring"
return
fi
if [ "$EXPECT_FAIL" = "yes" ] ; then
if [ "${EXPECT_FAIL}" = "yes" ] ; then
# A success is failure:
if [ "$return" = "0" ] ; then
fail "$command succeeded, should have failed"
if [ "${return}" = "0" ] ; then
fail "${command} succeeded, should have failed"
else
pass "test_command $command expected to fail, and did fail!"
pass "test_command ${command} expected to fail, and did fail!"
fi
else
if [ "$return" = "0" ] ; then
if [ "${return}" = "0" ] ; then
pass "$@"
else
fail "$@"
......@@ -422,16 +493,20 @@ test_command()
seconds=$(awk '/real/ {print $2}' < time.log | sed 's/\..*//')
fi
echo "test_app: ${app}: install_time $seconds seconds."
echo "test_command: ${app}: install_time ${seconds} seconds."
echo "Checking for dangling processes!"
# shellcheck disable=SC2009
ps augxw | grep \\.exe
ps augxw | grep \\.exe | grep -v grep
if [ -z "$_W_wine_not_needed" ]; then
"$WINESERVER" -w
if [ -z "${_W_wine_not_needed}" ]; then
"${WINESERVER}" -w
echo "Wineserver done."
fi
w_remove_prefix
unset EXPECT_FAIL
}
test_custom_verbs()
......@@ -467,30 +542,30 @@ load_false()
_EOF
# no xvfb needed
$WINETRICKS --no-isolate "${outputdir}/true.verb" ; ret=$?
case $ret in
${WINETRICKS} --no-isolate "${outputdir}/true.verb" ; ret=$?
case ${ret} in
0) pass "${outputdir}/true.verb not isolated, as apps passed" ;;
*) fail "${outputdir}/true.verb not isolated, as apps failed" ;;
esac
# no xvfb needed
$WINETRICKS --no-isolate "${outputdir}/false.verb" ; ret=$?
case $ret in
${WINETRICKS} --no-isolate "${outputdir}/false.verb" ; ret=$?
case ${ret} in
0) fail "false.verb not isolated, as apps worked, should have failed" ;;
1) pass "false.verb not isolated, as apps passed" ;;
*) fail "false.verb not isolated, as apps failed in unexpected way" ;;
esac
# no xvfb needed
$WINETRICKS --isolate "${outputdir}/true.verb" ; ret=$?
case $ret in
${WINETRICKS} --isolate "${outputdir}/true.verb" ; ret=$?
case ${ret} in
0) pass "${outputdir}/true.verb isolated, as apps passed" ;;
*) fail "${outputdir}/true.verb isolated, as apps failed" ;;
esac
# no xvfb needed
$WINETRICKS --isolate "${outputdir}/false.verb" ; ret=$?
case $ret in
${WINETRICKS} --isolate "${outputdir}/false.verb" ; ret=$?
case ${ret} in
0) fail "${outputdir}/false.verb isolated, as apps worked, should have failed" ;;
1) pass "${outputdir}/false.verb isolated, as apps passed" ;;
*) fail "${outputdir}/false.verb isolated, as apps failed in unexpected way" ;;
......@@ -521,30 +596,30 @@ load_false()
_EOF
# no xvfb needed
$WINETRICKS --no-isolate "${outputdir}/true.verb" ; ret=$?
case $ret in
${WINETRICKS} --no-isolate "${outputdir}/true.verb" ; ret=$?
case ${ret} in
0) pass "true.verb isolated, as dlls passed" ;;
*) fail "true.verb isolated, as dlls failed" ;;
esac
# no xvfb needed
$WINETRICKS --no-isolate "${outputdir}/false.verb" ; ret=$?
case $ret in
${WINETRICKS} --no-isolate "${outputdir}/false.verb" ; ret=$?
case ${ret} in
0) fail "${outputdir}/false.verb isolated, as dlls worked, should have failed" ;;
1) pass "${outputdir}/false.verb isolated, as dlls passed" ;;
*) fail "${outputdir}/false.verb isolated, as dlls failed in unexpected way" ;;
esac
# no xvfb needed
$WINETRICKS --no-isolate "${outputdir}/true.verb" ; ret=$?
case $ret in
${WINETRICKS} --no-isolate "${outputdir}/true.verb" ; ret=$?
case ${ret} in
0) pass "${outputdir}/true.verb isolated, as dlls passed" ;;
*) fail "${outputdir}/true.verb isolated, as dlls failed" ;;
esac
# no xvfb needed
$WINETRICKS --no-isolate "${outputdir}/false.verb" ; ret=$?
case $ret in
${WINETRICKS} --no-isolate "${outputdir}/false.verb" ; ret=$?
case ${ret} in
0) fail "${outputdir}/false.verb isolated, as dlls worked, should have failed" ;;
1) pass "${outputdir}/false.verb isolated, as dlls passed" ;;
*) fail "${outputdir}/false.verb isolated, as dlls failed in unexpected way" ;;
......@@ -554,156 +629,112 @@ _EOF
pass
}
test_dlls()
test_category()
{
# Test everything list in a particular category (i.e., dlls/fonts/settings/etc.)
category="$1"
if [ -z "$1" ]; then
fail "You must specify a category to test. I.e., one of: $(winetricks list | tr '\n' ' ')"
fi
# no xvfb needed, kcov breaks
"${shwinetricks}" list-manual-download > "${outputdir}/manual.log"
"${shwinetricks}" dlls list | awk '{print $1}' > "${outputdir}/dlls.log"
if grep .------------------- "${outputdir}/dlls.log" ; then
fail "output of dlls list contained garbage"
"${shwinetricks}" "${category}" list | awk '{print $1}' > "${outputdir}/${category}.log"
if grep .------------------- "${outputdir}/${category}.log" ; then
fail "output of ${category} list contained garbage"
exit 1
fi
sort -u < "${outputdir}/dlls.log" | grep -F -w -v -f "${outputdir}/manual.log" | grep -E -v "$BLACKLIST" > "${outputdir}/dlls.verbs"
sort -u < "${outputdir}/${category}.log" | grep -F -w -v -f "${outputdir}/manual.log" | grep -E -v "${BLACKLIST}" > "${outputdir}/${category}.verbs"
if [ ! -f "${outputdir}/dlls.verbs" ] ; then
w_die "${outputdir}/dlls.verbs doesn't exist? No verbs to test!"
elif [ -f "${outputdir}/dlls.verbs" ] && [ ! -s "${outputdir}/dlls.verbs" ] ; then
w_die "${outputdir}/dlls.verbs exists, but it is empty"
if [ ! -f "${outputdir}/${category}.verbs" ] ; then
w_die "${outputdir}/${category}.verbs doesn't exist? No verbs to test!"
elif [ -f "${outputdir}/${category}.verbs" ] && [ ! -s "${outputdir}/${category}.verbs" ] ; then
w_die "${outputdir}/${category}.verbs exists, but it is empty"
else
echo "Testing these verbs:"
cat "${outputdir}/dlls.verbs"
cat "${outputdir}/${category}.verbs"
fi
while IFS= read -r line; do
test_app "$line"
done < "${outputdir}/dlls.verbs"
test_app "${line}"
done < "${outputdir}/${category}.verbs"
}
test_dotnet()
{
# verify that each individual installer works:
dotnet_verbs="$($WINETRICKS dlls list | grep ^dotnet | grep -v -e sdk -e verifier | cut -d ' ' -f1)"
for x in $dotnet_verbs; do
echo "testing $x"
test_command --verify "$x"
dotnet_verbs="$(${WINETRICKS} dlls list | grep ^dotnet | grep -v -e sdk -e verifier | cut -d ' ' -f1)"
for x in ${dotnet_verbs}; do
echo "testing ${x}"
test_command --verify "${x}"
done
# FIXME: add other possible combinations
# combinations that should work:
for combo in "dotnet20 dotnet20sp2"; do
for combo in "dotnet20 dotnet20sp2" "dotnet30 dotnet40"; do
# shellcheck disable=SC2086
test_command --verify $combo
test_command --verify ${combo}
done
# combinations that should break:
for fail_combo in "dotnet20sp2 dotnet20sp1"; do
# shellcheck disable=SC2043
for fail_combo in "dotnet20sp2 dotnet20sp1" "dotnet30sp1 dotnet30"; do
# shellcheck disable=SC2086
EXPECT_FAIL=yes test_command $fail_combo
done
}
test_install_cached_or_download()
{
# no xvfb needed, kcov breaks
"${shwinetricks}" list-cached list-download > "${outputdir}/ticd.log"
if grep .------------------- ticd.log ; then
fail "output of list-cached list-download contained garbage"
exit 1
fi
sort -u < ticd.log | grep -E -v "$BLACKLIST" > ticd.verbs
if true ; then
# Split into two, only do half
nverbs=$(wc -l < ticd.verbs )
firsthalf=$((nverbs / 2 + 1))
sed "${firsthalf}"',$d' < ticd.verbs > ticd-1.verbs
sed '1,'"${firsthalf}"d < ticd.verbs > ticd-2.verbs
VERBS=$(cat ticd-1.verbs)
else
VERBS=$(cat ticd.verbs)
fi
for a in $VERBS; do
test_app "$a"
EXPECT_FAIL=yes test_command ${fail_combo}
done
# no xvfb needed, kcov breaks
"${shwinetricks}" list-cached | sort > cached.txt
# Verbs that are just wrappers around others don't detect cache/install state yet.
# Verbs that are just informative placeholders don't ever download (gecko).
# And some verbs (gecko110) don't usually install for other reasons.
BLACKLIST_CACHE="allfonts|cjkfonts|allcodecs|gecko|gecko110|fontfix"
grep -E -vw "$BLACKLIST_CACHE" ticd.verbs > download.txt
comm -23 download.txt cached.txt > download-but-not-cached.txt
echo "Supposedly downloadable"
cat download.txt
echo "Cached"
cat cached.txt
echo "Downloadable but not cached"
cat download-but-not-cached.txt
# shellcheck disable=SC2046
if [ $(wc -l < download-but-not-cached.txt) != 0 ] ; then
fail "test_install_cached_or_download: asked to install all downloadable apps, but some not listed as cached afterwards"
cat download-but-not-cached.txt
fi
}
test_listing()
{
export _W_wine_not_needed=1
W_WINE="$WINE"
W_WINE="${WINE}"
# Most options should work with or without WINE available:
for category in $("${WINETRICKS}" list); do
export WINE="$W_WINE"
test_command "$category" list
export WINE="${W_WINE}"
test_command "${category}" list
export WINE=/dev/null
test_command "$category" list
test_command "${category}" list
done
for hardcoded in list list-cached list-download list-manual-download list-all; do
export WINE="$W_WINE"
test_command $hardcoded
export WINE="${W_WINE}"
test_command ${hardcoded}
export WINE=/dev/null
test_command $hardcoded
test_command ${hardcoded}
done
# list-installed needs the installed metadata which requires wine/wineprefix info:
export WINE="$W_WINE"
export WINE="${W_WINE}"
test_command list-installed
# Testing list-installed without wine is hard. A new prefix won't have anything installed
# and so winetricks bails out before it tries to run w_metadata
# So to truly test we need something installed first, then re-use that prefix with WINE=/dev/null
unset _W_wine_not_needed
export WINE="$W_WINE"
export WINE="${W_WINE}"
test_command mfc42
export WINEPREFIX="$WINE_PREFIXES/mfc42"
export WINEPREFIX="${WINE_PREFIXES}/mfc42"
export _W_wine_not_needed=1
export WINE=/dev/null
EXPECT_FAIL=yes "$WINETRICKS" -q list-installed
EXPECT_FAIL=yes "${WINETRICKS}" -q list-installed
unset _W_wine_not_needed
export WINE="$W_WINE"
export WINE="${W_WINE}"
}
# shellcheck disable=SC2034
test_prefix()
{
# Run all this under the WINE_PREFIXES directory
WT_TEST_PREFIX="${WINE_PREFIXES}/wt-test-prefix"
XDG_CACHE_HOME="${WT_TEST_PREFIX}/.cache}"
cache="$XDG_CACHE_HOME/winetricks"
cache="${XDG_CACHE_HOME}/winetricks"
rm -rf "$WT_TEST_PREFIX"
rm -rf "${WT_TEST_PREFIX}"
testname="test1: WINEPREFIX set, no prefix="
if HOME="${WT_TEST_PREFIX}/home" WINEPREFIX="${WT_TEST_PREFIX}/test1" WINEDLLOVERRIDES="mshtml,mscoree=disabled" winetricks -q good && test -d "${WT_TEST_PREFIX}/test1/drive_c"; then
pass "${testname} passed"
......@@ -711,7 +742,7 @@ test_prefix()
fail "${testname} failed"
fi
rm -rf "$WT_TEST_PREFIX"
rm -rf "${WT_TEST_PREFIX}"
testname="test2: WINEPREFIX not set, prefix=test2"
if HOME="${WT_TEST_PREFIX}/home" WINEDLLOVERRIDES="mshtml,mscoree=disabled" winetricks -q prefix=test2 good && test -d "${WT_TEST_PREFIX}/home/.local/share/wineprefixes/test2/drive_c"; then
pass "${testname} passed"
......@@ -720,7 +751,7 @@ test_prefix()
fi
# prefix= overrules WINEPREFIX:
rm -rf "$WT_TEST_PREFIX"
rm -rf "${WT_TEST_PREFIX}"
testname="test3: WINEPREFIX=test3, prefix=test3"
if HOME="${WT_TEST_PREFIX}/home" WINEDLLOVERRIDES="mshtml,mscoree=disabled" WINEPREFIX="${WT_TEST_PREFIX}/test3" winetricks -q prefix=test3 good && test -d "${WT_TEST_PREFIX}/home/.local/share/wineprefixes/test3/drive_c"; then
pass "${testname} passed"
......@@ -730,7 +761,7 @@ test_prefix()
# if both are invalid:
# Note: if prefix= is used, ~/.local/share/wineprefixes becomes the prefix. Not sure if that's good or bad, but for now just documenting the behavior:
rm -rf "$WT_TEST_PREFIX"
rm -rf "${WT_TEST_PREFIX}"
testname="test4: WINEPREFIX=/dev/null, prefix="
if HOME="${WT_TEST_PREFIX}/home" WINEDLLOVERRIDES="mshtml,mscoree=disabled" WINEPREFIX="/dev/null" winetricks -q prefix= good && test -d "${WT_TEST_PREFIX}/home/.local/share/wineprefixes/drive_c"; then
pass "${testname} passed"
......@@ -739,7 +770,7 @@ test_prefix()
fi
# WINEPREFIX is invalid, prefix not used:
rm -rf "$WT_TEST_PREFIX"
rm -rf "${WT_TEST_PREFIX}"
testname="test5: WINEPREFIX=/dev/null, no prefix"
if ! HOME="${WT_TEST_PREFIX}/home" WINEDLLOVERRIDES="mshtml,mscoree=disabled" WINEPREFIX="/dev/null" winetricks -q good; then
pass "${testname} did not succeed (as expected)"
......@@ -748,7 +779,7 @@ test_prefix()
fi
# if nothing is defined, ~/.wine should be used:
rm -rf "$WT_TEST_PREFIX"
rm -rf "${WT_TEST_PREFIX}"
testname="test6: WINEPREFIX not set, prefix not set"
unset WINEPREFIX
if HOME="${WT_TEST_PREFIX}/home" WINEDLLOVERRIDES="mshtml,mscoree=disabled" winetricks -q good && test -d "${WT_TEST_PREFIX}/home/.wine/drive_c"; then
......@@ -756,15 +787,21 @@ test_prefix()
else
fail "${testname} failed"
fi
if [ "${W_OPT_NOCLEAN}" = "1" ]; then
echo "W_OPT_NOCLEAN set to 1, not removing ${WT_TEST_PREFIX}"
else
rm -rf "${WT_TEST_PREFIX}"
fi
}
test_quick()
{
echo "warning: quick test takes up around 20GB"
export W_CACHE="$cache"
export W_CACHE="${cache}"
# And test all the automatically-downloadable dlls
test_dlls
test_category dlls
# And win32 7zip fallback
test_7zip
......@@ -778,14 +815,16 @@ test_quick()
test_full() {
test_quick
test_category fonts
test_category settings
test_dotnet
test_speed list
test_speed list-download
#test_install_cached_or_download
test_speed list-cached
test_speed list-installed
test_custom_verbs
test_w_compare_wine_version
test_windows_versions
}
test_xvfb() {
......@@ -793,12 +832,14 @@ test_xvfb() {
w_die "Please install xvfb-run for xvfb tests"
fi
BLACKLIST="$BLACKLIST|$XVFB_BLACKLIST"
BLACKLIST="${BLACKLIST}|${XVFB_BLACKLIST}"
export BLACKLIST
# Not test_quick() since flash fails without proper X, but test_quick() doesn't respect $BLACKLIST
# Also, we don't really want to duplicate those tests twice, as this is for TravisCI where time is limited..
test_dlls
test_category dlls
test_category fonts
test_category settings
}
helper_test_w_compare_wine_version()
......@@ -807,7 +848,7 @@ helper_test_w_compare_wine_version()
comparison="$2" # the comparison to make (e.g., ',1.8', '1.9,', or '1.8,1.9')
workaround_expected="$3" # should the workaround be executed (yes/no)
WINETRICKS_WINE_VERSION="$version"
WINETRICKS_WINE_VERSION="${version}"
export WINETRICKS_WINE_VERSION
if [ "${workaround_expected}" = "yes" ] ; then
......@@ -817,10 +858,10 @@ w_metadata test_version settings
load_test_version()
{
# FIXME: w_info/w_die aren't getting through b/c of QUIET? stop using quiet everywhere..
if w_workaround_wine_bug 99999 "test" "$comparison" ; then
w_info "Using w_workaround, expected, version: $WINETRICKS_WINE_VERSION"
if w_workaround_wine_bug 99999 "test" "${comparison}" ; then
w_info "Using w_workaround, expected, version: ${WINETRICKS_WINE_VERSION}"
else
w_die "Not using w_workaround, unexpected, version: $WINETRICKS_WINE_VERSION"
w_die "Not using w_workaround, unexpected, version: ${WINETRICKS_WINE_VERSION}"
fi
}
_EOF
......@@ -830,10 +871,10 @@ w_metadata test_version settings
load_test_version()
{
if w_workaround_wine_bug 99999 "test" "$comparison" ; then
w_die "Using w_workaround, unexpected, version: $WINETRICKS_WINE_VERSION"
if w_workaround_wine_bug 99999 "test" "${comparison}" ; then
w_die "Using w_workaround, unexpected, version: ${WINETRICKS_WINE_VERSION}"
else
w_info "Not using w_workaround, expected, version: $WINETRICKS_WINE_VERSION"
w_info "Not using w_workaround, expected, version: ${WINETRICKS_WINE_VERSION}"
fi
}
_EOF
......@@ -842,10 +883,10 @@ else
fi
# no xvfb needed
$WINETRICKS -v --no-isolate "${outputdir}/test_version.verb" ; ret=$?
case $ret in
0) pass "test_version.verb (version: $version comparison: $comparison expected: $workaround_expected passed" ;;
*) fail "test_version.verb (version: $version comparison: $comparison expected: $workaround_expected failed" ;;
${WINETRICKS} -v --no-isolate "${outputdir}/test_version.verb" ; ret=$?
case ${ret} in
0) pass "test_version.verb (version: ${version} comparison: ${comparison} expected: ${workaround_expected} passed" ;;
*) fail "test_version.verb (version: ${version} comparison: ${comparison} expected: ${workaround_expected} failed" ;;
esac
}
......@@ -925,6 +966,18 @@ test_w_compare_wine_version()
# FIXME: there's plenty of room for more tests..
}
test_windows_versions()
{
# shellcheck disable=SC2013
for version in $("${WINETRICKS}" settings list | grep 'Windows version' | cut -d ' ' -f1 | grep -v 'winver='); do
# Make sure that changing the Windows version works:
test_command "${version}"
# FIXME: ideally, we'd verify the version here, but that's currently not trivial, see:
# https://bugs.winehq.org/show_bug.cgi?id=49242
done
}
case "$1" in
7zip) check_deps; test_7zip;;
check-deps) check_deps ; exit $? ;;
......@@ -935,32 +988,66 @@ case "$1" in
listing) test_listing ;;
prefix) test_prefix ;;
quick) check_deps && test_quick ;;
windows-versions) test_windows_versions;;
w_compare_wine_version) check_deps && test_w_compare_wine_version ;;
xvfb-check) check_deps && XVFB=xvfb-run && export XVFB && test_xvfb ;;
*) echo "Usage: $0 quick|full" ; exit 1 ;;
esac
if [ ${errors} = 0 ] && [ ${passes} -gt 0 ] ; then
result="PASS"
if [ "${W_OPT_NOCLEAN}" = "1" ]; then
echo "W_OPT_NOCLEAN set to 1, not removing ${WINE_PREFIXES}"
else
rm -rf "${WINE_PREFIXES}"
fi
else
result="FAIL"
fi
# Turn off set -x so the results are cleaner:
set +x
echo "==============================================================="
echo "Test over, $errors failures, $passes successes, $skips skipped."
if [ $errors = 0 ] && [ $passes -gt 0 ] ; then
echo PASS
echo "Test over, ${errors} failures, ${passes} successes, ${skips} skipped."
echo ${result}
if [ ${errors} = 0 ] && [ ${passes} -gt 0 ] ; then
echo "==============================================================="
exit 0
status=0
else
echo FAIL
echo "Test failures:"
oldifs="$IFS"
echo "==============================================================="
oldifs="${IFS}"
IFS="|"
for test_failure in $failed_verbs; do
if [ -z "$test_failure" ]; then
echo "Test failures:"
for test_failure in ${failed_verbs}; do
if [ -z "${test_failure}" ]; then
:
fi
echo "$test_failure"
echo "${test_failure}"
done
IFS=$oldifs
echo
IFS=${oldifs}
status=1
fi
# skips
if [ ${errors} = 0 ] && [ ${passes} -gt 0 ] ; then
echo "==============================================================="
exit 1
oldifs="${IFS}"
IFS="|"
echo "Skipped tests:"
for skipped_test in ${skipped_verbs}; do
if [ -z "${skipped_test}" ]; then
:
fi
echo "${skipped_test}"
done
IFS=${oldifs}
fi
echo "==============================================================="
exit ${status}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment