wfvm: remove Visual Studio

Installer is a piece of trash and won't work reliably in command line.
This commit is contained in:
Sebastien Bourdeauducq 2020-06-20 19:57:22 +08:00
parent 8c8ede8387
commit ffed59ad95

View File

@ -1,8 +1,5 @@
{ pkgs }:
let
wfvm = import ./.. { inherit pkgs; };
in
rec {
{
anaconda3 = {
name = "Anaconda3";
script = let
@ -80,96 +77,4 @@ rec {
win-exec "msiexec.exe /q /i cmake.msi ADD_CMAKE_TO_PATH=System"
'';
};
msvc = {
# This is quite fragile and annoying, M$ have done their best to make the VS installation process shitty.
# The instructions here are vaguely correct:
# https://docs.microsoft.com/en-us/visualstudio/install/create-an-offline-installation-of-visual-studio?view=vs-2019
# We are giving the VM network access here, so of course the M$ spyware does not miss the opportunity to phone home and cause problems.
# Split the download into two, so that each part completes before M$ Windoze 10 activation crap kicks in.
# TODO: Probably it is possible to block access specifically to the M$ activation server instead and still be able to download VS (more robust, better privacy).
name = "MSVC";
script = let
bootstrapper = pkgs.fetchurl {
url = "https://download.visualstudio.microsoft.com/download/pr/ac05c4f5-0da1-429f-8701-ce509ac69926/cc9556137c66a373670376d6db2fc5c5c937b2b0bf7b3d3cac11c69e33615511/vs_Community.exe";
sha256 = "04amc4rrxihimhy3syxzn2r3gjf5qlpxpmkn0dkp78v6gh9md5fc";
};
# This touchy-feely "community" piece of trash seems deliberately crafted to break Wine, so we use the VM to run it.
download-1 = wfvm.utils.wfvm-run {
name = "download-vs-1";
image = wfvm.makeWindowsImage { };
isolateNetwork = false;
script =
''
ln -s ${bootstrapper} vs_Community.exe
${wfvm.utils.win-put}/bin/win-put vs_Community.exe
rm vs_Community.exe
echo "Running Visual Studio installer in download mode..."
${wfvm.utils.win-exec}/bin/win-exec "vs_Community.exe --quiet --norestart --layout c:\vslayout --add Microsoft.VisualStudio.Workload.NativeDesktop --includeRecommended --lang en-US"
echo "Retrieving VS layout from VM..."
${wfvm.utils.win-get}/bin/win-get /c:/vslayout
'';
};
cache-1 = pkgs.stdenv.mkDerivation {
name = "vs-1";
outputHashAlgo = "sha256";
outputHashMode = "recursive";
outputHash = "0fp7a6prjp8n8sirwday13wis3xyzhmrwi377y3x89nxzysp0mnv";
phases = [ "buildPhase" ];
buildInputs = [ download-1 ];
buildPhase =
''
mkdir $out
cd $out
wfvm-run-download-vs-1
'';
};
download-2 = wfvm.utils.wfvm-run {
name = "download-vs-2";
image = wfvm.makeWindowsImage { };
isolateNetwork = false;
script =
''
echo "Sending previous VS layout to VM..."
# If we don't do that, it breaks on reception with permission issues. Unfortunately, it seems there is no way to tell sftp
# not to set files to read-only mode on the Windows VM.
cp --no-preserve=mode,ownership -R ${cache-1}/vslayout vslayout
${wfvm.utils.win-put}/bin/win-put vslayout /c:/
rm -rf vslayout
echo "Running Visual Studio installer in download mode..."
${wfvm.utils.win-exec}/bin/win-exec "cd \vslayout && vs_Community.exe --quiet --norestart --layout c:\vslayout --add Microsoft.VisualStudio.Component.Windows81SDK --includeRecommended --lang en-US"
echo "Retrieving VS layout from VM..."
${wfvm.utils.win-get}/bin/win-get /c:/vslayout
'';
};
cache-2 = pkgs.stdenv.mkDerivation {
name = "vs-2";
outputHashAlgo = "sha256";
outputHashMode = "recursive";
outputHash = "0wgwnq142mm3rjg1fmpi5aadbn1m798da14g47prcd1m1ynp7l0p";
phases = [ "buildPhase" ];
buildInputs = [ download-2 ];
buildPhase =
''
mkdir $out
cd $out
wfvm-run-download-vs-2
'';
};
in
''
ln -s ${cache-2}/vslayout vslayout
win-put vslayout /c:/
echo "Running Visual Studio installer"
win-exec "cd \vslayout && start /wait vs_Community.exe --passive --wait && echo %errorlevel%"
'';
};
}