blob: 9c53d77613d7fc6c3e920db9c8dff6e5b842feda [file] [log] [blame]
# escape=`
# Copyright 2021 The Cobalt Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
ARG FROM_IMAGE
FROM ${FROM_IMAGE}
SHELL ["powershell", "-ExecutionPolicy", "Unrestricted", "-Command", `
"$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
# Helper script for quick delete operations in windows
COPY ./fast-win-rmdir.cmd /fast-win-rmdir.cmd
# Pin Choco to 1.4.0 to avoid required reboot in 2.0.0
ENV chocolateyVersion '1.4.0'
# Install deps via chocolatey.
RUN iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'));`
mkdir C:\choco-cache;`
# Note: We pinned python 3.11.0 version here because 3.11.2 has a regression
# where the install arguments like TargetDir were being ignored.
choco install -y -c C:\choco-cache python3 --version 3.11.0 -ia '/quiet InstallAllUsers=1 PrependPath=1 TargetDir="C:\Python3"';`
choco install -y -c C:\choco-cache winflexbison3 --params '/InstallDir:C:\bison';`
choco install -y -c C:\choco-cache ninja;`
choco install -y -c C:\choco-cache nodejs-lts;`
choco install -y -c C:\choco-cache git;`
choco install -y -c C:\choco-cache cmake --installargs 'ADD_CMAKE_TO_PATH=System';`
choco install -y -c C:\choco-cache nasm;`
Write-Host ('Deleting the chocolately download cache');`
Remove-Item -Force -Recurse $env:TEMP\*;`
C:\fast-win-rmdir.cmd C:\choco-cache;`
# Create version specific copy of each python executable.
Copy-Item C:\Python3\python.exe C:\Python3\python3.exe
# Configure PATH for nasm.
RUN setx /M PATH $($Env:PATH + ';C:\Program Files\NASM')
# Install python3 packages via PIP and set various configurations.
COPY ./requirements.txt /requirements.txt
RUN mkdir C:\pip-cache;`
python3 -m pip install --require-hashes --no-deps -r /requirements.txt --cache-dir C:\pip-cache;`
C:\fast-win-rmdir.cmd C:\pip-cache;`
# Configure git global settings.
git config --global core.autocrlf false;`
git config --global core.symlinks false;`
git config --global core.filemode false;`
git config --global core.preloadindex true;`
git config --global core.fscache true;`
git config --global --add safe.directory C:/code;`
# Registry changes to enable long filesystem paths.
reg add 'HKLM\SYSTEM\CurrentControlSet\Control\FileSystem' /v LongPathsEnabled /t REG_DWORD /reg:64 /d 1 /f;`
reg add 'HKLM\SYSTEM\CurrentControlSet\Control\FileSystem' /v LongPathsEnabled /t REG_DWORD /d 1 /f;`
# Environment variables
# This fixes a bug running python scripts "LookupError: unknown encoding: cp0".
cmd /S /C setx /M PYTHONIOENCODING 'UTF-8';`
# This ensures GYP does not generate PDB files, or create symlinks during build.
cmd /S /C setx /M IS_DOCKER '1'
# Setup Sccache
ADD https://storage.googleapis.com/cobalt-docker-resources/sccache-0.2.16-alpha.0.exe /sccache/sccache.exe
RUN mkdir C:\root\sccache;`
setx /M PATH $($Env:PATH + ';C:\sccache')
# Set up GN
RUN (New-Object Net.WebClient).DownloadFile(`
'https://chrome-infra-packages.appspot.com/dl/gn/gn/windows-amd64/+/ur-MX9ARZXAVL1MusvU3v4YebmmerRPLDsJQrTLvN1cC',`
'C:\gn.zip') ; `
Expand-Archive -Force C:\gn.zip C:\gn\ ; `
Remove-Item -Path C:\gn.zip ; `
setx /M PATH $($Env:PATH + ';C:\gn')
# Configure common env vars.
ENV NINJA_STATUS="[%e sec | %f/%t %u remaining | %c/sec | j%r] "