Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,4 @@ Source/Externals/.packman/*
Media
Tools/.packman
Tests/data
*.tlog
53 changes: 35 additions & 18 deletions Build/deploycommon.bat
Original file line number Diff line number Diff line change
Expand Up @@ -8,35 +8,52 @@ rem %4 -> WINDSDK Directory

setlocal

SET ExtDir=%1\Externals\.packman\
SET OutDir=%3
SET FalcorDir=%1\Falcor\
set ExtDir=%1\Externals\.packman\
set OutDir=%3
set FalcorDir=%1\Falcor\
if not exist "%OutDir%" mkdir "%OutDir%"

set IsDebug=0
if "%OutDir:~-6%" == "Debug\" set IsDebug=1

rem Copy Falcor's files
IF not exist %OutDir%\Data\ mkdir %OutDir%\Data >nul
if not exist %OutDir%\Data\ mkdir %OutDir%\Data >nul
call %~dp0\deployproject.bat %FalcorDir% %OutDir%

rem Copy externals
robocopy %ExtDir%\Python\ %OutDir% Python36*.dll /r:0 >nul
robocopy %ExtDir%\Python %OutDir%\Python /E /r:0 >nul
robocopy %ExtDir%\AntTweakBar\lib %OutDir% AntTweakBar64.dll /r:0 >nul
robocopy %ExtDir%\FreeImage %OutDir% freeimage.dll /r:0 >nul
robocopy %ExtDir%\assimp\bin\%2 %OutDir% *.dll /r:0 >nul
robocopy %ExtDir%\FFMpeg\bin\%2 %OutDir% *.dll /r:0 >nul
robocopy %ExtDir%\Slang\bin\windows-x64\release %OutDir% *.dll /r:0 >nul
robocopy %ExtDir%\GLFW\lib %OutDir% *.dll /r:0 >nul
if %IsDebug% EQU 0 (
robocopy %ExtDir%\deps\bin\ %OutDir% /E /r:0 >nul
) else (
robocopy %ExtDir%\deps\debug\bin\ %OutDir% /E /r:0 >nul
robocopy %ExtDir%\deps\bin\ %OutDir% assimp-vc142-mt.* /r:0 >nul
rem Needed for OpenVDB (debug version links to release version of Half_2.5)
robocopy %ExtDir%\deps\bin\ %OutDir% Half-2_5.* /r:0 >nul
)
robocopy %ExtDir%\python\ %OutDir% Python36*.dll /r:0 >nul
robocopy %ExtDir%\python %OutDir%\Python /E /r:0 >nul
robocopy %ExtDir%\slang\bin\windows-x64\release %OutDir% *.dll /r:0 >nul
robocopy %ExtDir%\WinPixEventRuntime\bin\x64 %OutDir% WinPixEventRuntime.dll /r:0 >nul
robocopy "%~4\Redist\D3D\%2" %OutDir% dxil.dll /r:0 >nul
robocopy "%~4\Redist\D3D\%2" %OutDir% dxcompiler.dll /r:0 >nul
robocopy %ExtDir%\Cuda\bin\ %OutDir% cudart*.dll /r:0 >nul
robocopy %ExtDir%\Cuda\bin\ %OutDir% nvrtc*.dll /r:0 >nul

rem Copy NVAPI
set NvApiDir=%ExtDir%\NVAPI
IF exist %NvApiDir% (
IF not exist %OutDir%\Shaders\NVAPI mkdir %OutDir%\Shaders\NVAPI >nul
copy /y %NvApiDir%\nvHLSLExtns.h %OutDir%\Shaders\NVAPI
copy /y %NvApiDir%\nvHLSLExtnsInternal.h %OutDir%\Shaders\NVAPI
copy /y %NvApiDir%\nvShaderExtnEnums.h %OutDir%\Shaders\NVAPI
set NvApiDir=%ExtDir%\nvapi
set NvApiTargetDir=%OutDir%\Shaders\NVAPI
if exist %NvApiDir% (
if not exist %NvApiTargetDir% mkdir %NvApiTargetDir% >nul
copy /y %NvApiDir%\nvHLSLExtns.h %NvApiTargetDir%
copy /y %NvApiDir%\nvHLSLExtnsInternal.h %NvApiTargetDir%
copy /y %NvApiDir%\nvShaderExtnEnums.h %NvApiTargetDir%
)

rem Copy NanoVDB
set NanoVDBApiDir=%ExtDir%\nanovdb
set NanoVDBTargetDir=%OutDir%\Shaders\NanoVDB
if exist %NanoVDBApiDir% (
if not exist %NanoVDBTargetDir% mkdir %NanoVDBTargetDir% >nul
copy /y %NanoVDBApiDir%\include\nanovdb\PNanoVDB.h %NanoVDBTargetDir%
)

rem robocopy sets the error level to something that is not zero even if the copy operation was successful. Set the error level to zero
Expand Down
186 changes: 100 additions & 86 deletions Build/packman/bootstrap/configure.bat
Original file line number Diff line number Diff line change
@@ -1,146 +1,160 @@
@set PM_PACKMAN_VERSION=5.14
:: Copyright 2019 NVIDIA CORPORATION
::
:: 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.

set PM_PACKMAN_VERSION=6.15

:: Specify where packman command is rooted
@set PM_INSTALL_PATH=%~dp0..
set PM_INSTALL_PATH=%~dp0..

:: The external root may already be configured and we should do minimal work in that case
@if defined PM_PACKAGES_ROOT goto ENSURE_DIR
if defined PM_PACKAGES_ROOT goto ENSURE_DIR

:: If the folder isn't set we assume that the best place for it is on the drive that we are currently
:: running from
@set PM_DRIVE=%CD:~0,2%
set PM_DRIVE=%CD:~0,2%

@set PM_PACKAGES_ROOT=%PM_DRIVE%\packman-repo
set PM_PACKAGES_ROOT=%PM_DRIVE%\packman-repo

:: We use *setx* here so that the variable is persisted in the user environment
@echo Setting user environment variable PM_PACKAGES_ROOT to %PM_PACKAGES_ROOT%
@setx PM_PACKAGES_ROOT %PM_PACKAGES_ROOT%
@if errorlevel 1 goto ERROR
echo Setting user environment variable PM_PACKAGES_ROOT to %PM_PACKAGES_ROOT%
setx PM_PACKAGES_ROOT %PM_PACKAGES_ROOT%
if %errorlevel% neq 0 ( goto ERROR )

:: The above doesn't work properly from a build step in VisualStudio because a separate process is
:: spawned for it so it will be lost for subsequent compilation steps - VisualStudio must
:: be launched from a new process. We catch this odd-ball case here:
@if defined PM_DISABLE_VS_WARNING goto ENSURE_DIR
@if not defined VSLANG goto ENSURE_DIR
@echo The above is a once-per-computer operation. Unfortunately VisualStudio cannot pick up environment change
@echo unless *VisualStudio is RELAUNCHED*.
@echo If you are launching VisualStudio from command line or command line utility make sure
@echo you have a fresh launch environment (relaunch the command line or utility).
@echo If you are using 'linkPath' and referring to packages via local folder links you can safely ignore this warning.
@echo You can disable this warning by setting the environment variable PM_DISABLE_VS_WARNING.
@echo.
if defined PM_DISABLE_VS_WARNING goto ENSURE_DIR
if not defined VSLANG goto ENSURE_DIR
echo The above is a once-per-computer operation. Unfortunately VisualStudio cannot pick up environment change
echo unless *VisualStudio is RELAUNCHED*.
echo If you are launching VisualStudio from command line or command line utility make sure
echo you have a fresh launch environment (relaunch the command line or utility).
echo If you are using 'linkPath' and referring to packages via local folder links you can safely ignore this warning.
echo You can disable this warning by setting the environment variable PM_DISABLE_VS_WARNING.
echo.

:: Check for the directory that we need. Note that mkdir will create any directories
:: that may be needed in the path
:: that may be needed in the path
:ENSURE_DIR
@if not exist "%PM_PACKAGES_ROOT%" (
@echo Creating directory %PM_PACKAGES_ROOT%
@mkdir "%PM_PACKAGES_ROOT%"
@if errorlevel 1 goto ERROR_MKDIR_PACKAGES_ROOT
if not exist "%PM_PACKAGES_ROOT%" (
echo Creating directory %PM_PACKAGES_ROOT%
mkdir "%PM_PACKAGES_ROOT%"
)
if %errorlevel% neq 0 ( goto ERROR_MKDIR_PACKAGES_ROOT )

:: The Python interpreter may already be externally configured
@if defined PM_PYTHON_EXT (
@set PM_PYTHON=%PM_PYTHON_EXT%
@goto PACKMAN
if defined PM_PYTHON_EXT (
set PM_PYTHON=%PM_PYTHON_EXT%
goto PACKMAN
)

@set PM_PYTHON_VERSION=2.7.14-windows-x86_32
@set PM_PYTHON_BASE_DIR=%PM_PACKAGES_ROOT%\python
@set PM_PYTHON_DIR=%PM_PYTHON_BASE_DIR%\%PM_PYTHON_VERSION%
@set PM_PYTHON=%PM_PYTHON_DIR%\python.exe
set PM_PYTHON_VERSION=3.7.4-windows-x86_64
set PM_PYTHON_BASE_DIR=%PM_PACKAGES_ROOT%\python
set PM_PYTHON_DIR=%PM_PYTHON_BASE_DIR%\%PM_PYTHON_VERSION%
set PM_PYTHON=%PM_PYTHON_DIR%\python.exe

@if exist "%PM_PYTHON%" goto PACKMAN
@if not exist "%PM_PYTHON_BASE_DIR%" call :CREATE_PYTHON_BASE_DIR
if exist "%PM_PYTHON%" goto PACKMAN
if not exist "%PM_PYTHON_BASE_DIR%" call :CREATE_PYTHON_BASE_DIR

@set PM_PYTHON_PACKAGE=python@%PM_PYTHON_VERSION%.cab
@for /f "delims=" %%a in ('powershell -ExecutionPolicy ByPass -NoLogo -NoProfile -File "%~dp0\generate_temp_file_name.ps1"') do @set TEMP_FILE_NAME=%%a
@set TARGET=%TEMP_FILE_NAME%.zip
@call "%~dp0fetch_file_from_s3.cmd" %PM_PYTHON_PACKAGE% "%TARGET%"
@if errorlevel 1 goto ERROR
set PM_PYTHON_PACKAGE=python@%PM_PYTHON_VERSION%.cab
for /f "delims=" %%a in ('powershell -ExecutionPolicy ByPass -NoLogo -NoProfile -File "%~dp0\generate_temp_file_name.ps1"') do set TEMP_FILE_NAME=%%a
set TARGET=%TEMP_FILE_NAME%.zip
call "%~dp0fetch_file_from_s3.cmd" %PM_PYTHON_PACKAGE% "%TARGET%"
if %errorlevel% neq 0 ( goto ERROR )

@for /f "delims=" %%a in ('powershell -ExecutionPolicy ByPass -NoLogo -NoProfile -File "%~dp0\generate_temp_folder.ps1" -parentPath "%PM_PYTHON_BASE_DIR%"') do @set TEMP_FOLDER_NAME=%%a
@echo Unpacking Python interpreter ...
@"%SystemRoot%\system32\expand.exe" -F:* "%TARGET%" "%TEMP_FOLDER_NAME%" 1> nul
@del "%TARGET%"
for /f "delims=" %%a in ('powershell -ExecutionPolicy ByPass -NoLogo -NoProfile -File "%~dp0\generate_temp_folder.ps1" -parentPath "%PM_PYTHON_BASE_DIR%"') do set TEMP_FOLDER_NAME=%%a
echo Unpacking Python interpreter ...
"%SystemRoot%\system32\expand.exe" -F:* "%TARGET%" "%TEMP_FOLDER_NAME%" 1> nul
del "%TARGET%"
:: Failure during extraction to temp folder name, need to clean up and abort
@if errorlevel 1 (
@call :CLEAN_UP_TEMP_FOLDER
@goto ERROR
if %errorlevel% neq 0 (
call :CLEAN_UP_TEMP_FOLDER
goto ERROR
)

:: If python has now been installed by a concurrent process we need to clean up and then continue
@if exist "%PM_PYTHON%" (
@call :CLEAN_UP_TEMP_FOLDER
@goto PACKMAN
if exist "%PM_PYTHON%" (
call :CLEAN_UP_TEMP_FOLDER
goto PACKMAN
) else (
@if exist "%PM_PYTHON_DIR%" ( @rd /s /q "%PM_PYTHON_DIR%" > nul )
if exist "%PM_PYTHON_DIR%" ( rd /s /q "%PM_PYTHON_DIR%" > nul )
)

:: Perform atomic rename
@rename "%TEMP_FOLDER_NAME%" "%PM_PYTHON_VERSION%" 1> nul
rename "%TEMP_FOLDER_NAME%" "%PM_PYTHON_VERSION%" 1> nul
:: Failure during move, need to clean up and abort
@if errorlevel 1 (
@call :CLEAN_UP_TEMP_FOLDER
@goto ERROR
if %errorlevel% neq 0 (
call :CLEAN_UP_TEMP_FOLDER
goto ERROR
)

:PACKMAN
:: The packman module may already be externally configured
@if defined PM_MODULE_DIR_EXT (
@set PM_MODULE_DIR=%PM_MODULE_DIR_EXT%
if defined PM_MODULE_DIR_EXT (
set PM_MODULE_DIR=%PM_MODULE_DIR_EXT%
) else (
@set PM_MODULE_DIR=%PM_PACKAGES_ROOT%\packman-common\%PM_PACKMAN_VERSION%
set PM_MODULE_DIR=%PM_PACKAGES_ROOT%\packman-common\%PM_PACKMAN_VERSION%
)

@set PM_MODULE=%PM_MODULE_DIR%\packman.py
set PM_MODULE=%PM_MODULE_DIR%\packman.py

@if exist "%PM_MODULE%" goto ENSURE_7ZA
if exist "%PM_MODULE%" goto ENSURE_7ZA

@set PM_MODULE_PACKAGE=packman-common@%PM_PACKMAN_VERSION%.zip
@for /f "delims=" %%a in ('powershell -ExecutionPolicy ByPass -NoLogo -NoProfile -File "%~dp0\generate_temp_file_name.ps1"') do @set TEMP_FILE_NAME=%%a
@set TARGET=%TEMP_FILE_NAME%
@call "%~dp0fetch_file_from_s3.cmd" %PM_MODULE_PACKAGE% "%TARGET%"
@if errorlevel 1 goto ERROR
set PM_MODULE_PACKAGE=packman-common@%PM_PACKMAN_VERSION%.zip
for /f "delims=" %%a in ('powershell -ExecutionPolicy ByPass -NoLogo -NoProfile -File "%~dp0\generate_temp_file_name.ps1"') do set TEMP_FILE_NAME=%%a
set TARGET=%TEMP_FILE_NAME%
call "%~dp0fetch_file_from_s3.cmd" %PM_MODULE_PACKAGE% "%TARGET%"
if %errorlevel% neq 0 ( goto ERROR )

@echo Unpacking ...
@"%PM_PYTHON%" -S -s -u -E "%~dp0\install_package.py" "%TARGET%" "%PM_MODULE_DIR%"
@if errorlevel 1 goto ERROR
echo Unpacking ...
"%PM_PYTHON%" -S -s -u -E "%~dp0\install_package.py" "%TARGET%" "%PM_MODULE_DIR%"
if %errorlevel% neq 0 ( goto ERROR )

@del "%TARGET%"
del "%TARGET%"

:ENSURE_7ZA
@set PM_7Za_VERSION=16.02.4
@set PM_7Za_PATH=%PM_PACKAGES_ROOT%\7za\%PM_7ZA_VERSION%
@if exist "%PM_7Za_PATH%" goto END
@set PM_7Za_PATH=%PM_PACKAGES_ROOT%\chk\7za\%PM_7ZA_VERSION%
@if exist "%PM_7Za_PATH%" goto END
set PM_7Za_VERSION=16.02.4
set PM_7Za_PATH=%PM_PACKAGES_ROOT%\7za\%PM_7ZA_VERSION%
if exist "%PM_7Za_PATH%" goto END
set PM_7Za_PATH=%PM_PACKAGES_ROOT%\chk\7za\%PM_7ZA_VERSION%
if exist "%PM_7Za_PATH%" goto END

@"%PM_PYTHON%" -S -s -u -E "%PM_MODULE%" pull "%PM_MODULE_DIR%\deps.packman.xml"
@if errorlevel 1 goto ERROR
"%PM_PYTHON%" -S -s -u -E "%PM_MODULE%" pull "%PM_MODULE_DIR%\deps.packman.xml"
if %errorlevel% neq 0 ( goto ERROR )

@goto END
goto END

:ERROR_MKDIR_PACKAGES_ROOT
@echo Failed to automatically create packman packages repo at %PM_PACKAGES_ROOT%.
@echo Please set a location explicitly that packman has permission to write to, by issuing:
@echo.
@echo setx PM_PACKAGES_ROOT {path-you-choose-for-storing-packman-packages-locally}
@echo.
@echo Then launch a new command console for the changes to take effect and run packman command again.
@exit /B 1
echo Failed to automatically create packman packages repo at %PM_PACKAGES_ROOT%.
echo Please set a location explicitly that packman has permission to write to, by issuing:
echo.
echo setx PM_PACKAGES_ROOT {path-you-choose-for-storing-packman-packages-locally}
echo.
echo Then launch a new command console for the changes to take effect and run packman command again.
exit /B %errorlevel%

:ERROR
@echo !!! Failure while configuring local machine :( !!!
@exit /B 1
echo !!! Failure while configuring local machine :( !!!
exit /B %errorlevel%

:CLEAN_UP_TEMP_FOLDER
@rd /S /Q "%TEMP_FOLDER_NAME%"
@exit /B
rd /S /Q "%TEMP_FOLDER_NAME%"
exit /B

:CREATE_PYTHON_BASE_DIR
:: We ignore errors and clean error state - if two processes create the directory one will fail which is fine
@md "%PM_PYTHON_BASE_DIR%" > nul 2>&1
@exit /B 0
md "%PM_PYTHON_BASE_DIR%" > nul 2>&1
exit /B 0

:END
16 changes: 15 additions & 1 deletion Build/packman/bootstrap/fetch_file_from_s3.cmd
Original file line number Diff line number Diff line change
@@ -1,9 +1,23 @@
:: Copyright 2019 NVIDIA CORPORATION
::
:: 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.

:: You need to specify <package-name> <target-path> as input to this command
@setlocal
@set PACKAGE_NAME=%1
@set TARGET_PATH=%2

@echo Fetching %PACKAGE_NAME% from packman-bootstrap over HTTP ...
@echo Fetching %PACKAGE_NAME% ...

@powershell -ExecutionPolicy ByPass -NoLogo -NoProfile -File "%~dp0fetch_file_from_s3.ps1" -sourceName %PACKAGE_NAME% ^
-output %TARGET_PATH%
Expand Down
24 changes: 20 additions & 4 deletions Build/packman/bootstrap/fetch_file_from_s3.ps1
Original file line number Diff line number Diff line change
@@ -1,8 +1,24 @@
<#
Copyright 2019 NVIDIA CORPORATION

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.
#>

param(
[Parameter(Mandatory=$true)][string]$sourceName=$null,
[string]$output="out.exe"
)
$source = "http://packman-bootstrap.s3.amazonaws.com/" + $sourceName
$source = "http://bootstrap.packman.nvidia.com/" + $sourceName
$filename = $output

$triesLeft = 3
Expand All @@ -15,7 +31,7 @@ do

try
{
Write-Host "Connecting to S3 ..."
Write-Host "Connecting to bootstrap.packman.nvidia.com ..."
$res = $req.GetResponse()
if($res.StatusCode -eq "OK") {
Write-Host "Downloading ..."
Expand All @@ -35,13 +51,13 @@ do
Write-Progress "Downloading $url" "Saving $total bytes..." -id 0
}
} while ($count -gt 0)

$triesLeft = 0
}
}
catch
{
Write-Host "Error connecting to S3!"
Write-Host "Error downloading $source!"
Write-Host $_.Exception|format-list -force
}
finally
Expand Down
Loading