diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0e4acfeef47..1381a0f2ea9 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -204,6 +204,8 @@ jobs: f.write( 'ARNOLD_ROOT=%s\n' % arnoldRoot ) env: PYTHONUTF8: 1 + ARNOLD_DOWNLOAD_USER: ${{ secrets.ARNOLD_DOWNLOAD_USER }} + ARNOLD_DOWNLOAD_PASSWORD: ${{ secrets.ARNOLD_DOWNLOAD_PASSWORD }} shell: python - name: Build Docs and Package diff --git a/.github/workflows/main/installArnold.py b/.github/workflows/main/installArnold.py index 404d225377a..bbcc89da07d 100755 --- a/.github/workflows/main/installArnold.py +++ b/.github/workflows/main/installArnold.py @@ -36,15 +36,12 @@ import sys import argparse import os +import pathlib +import shutil import subprocess -import urllib +import urllib.request import zipfile -if sys.version_info[0] < 3 : - from urllib import urlretrieve -else: - from urllib.request import urlretrieve - platform = { "darwin" : "darwin", "win32" : "windows" }.get( sys.platform, "linux" ) format = { "win32" : "zip" }.get( sys.platform, "tgz" ) @@ -65,15 +62,29 @@ url="https://forgithubci.solidangle.com/arnold/{}".format( archive ) -installDir = os.path.join( "arnoldRoot", args.version ) -os.makedirs( installDir ) -os.chdir( installDir ) +installDir = pathlib.Path.cwd() / "arnoldRoot" / args.version +installDir.mkdir( parents = True, exist_ok = True ) +archiveFile = installDir / archive print( "Downloading Arnold \"{}\"".format( url ) ) -archiveFile, headers = urlretrieve( url ) + +passwordManager = urllib.request.HTTPPasswordMgrWithDefaultRealm() +passwordManager.add_password( + realm = None, + uri = url, + user = os.environ["ARNOLD_DOWNLOAD_USER"], + passwd = os.environ["ARNOLD_DOWNLOAD_PASSWORD"] +) + +authHandler = urllib.request.HTTPBasicAuthHandler( passwordManager ) +opener = urllib.request.build_opener( authHandler ) + +with opener.open( url ) as inFile : + with open( archiveFile, "wb" ) as outFile : + shutil.copyfileobj( inFile, outFile ) if format == "tgz" : - subprocess.check_call( [ "tar", "-xzf", archiveFile ] ) + subprocess.check_call( [ "tar", "-xzf", archiveFile, "-C", installDir ] ) elif format == "zip": with zipfile.ZipFile( archiveFile ) as f : - f.extractall() + f.extractall( path = installDir ) diff --git a/Changes.md b/Changes.md index 09f3f106311..1d6a5352afa 100644 --- a/Changes.md +++ b/Changes.md @@ -119,7 +119,7 @@ Build Improvements ------------ -- ArnoldShader, ArnoldColorManager : Improved browsers for file parameters (#5592) : +- ArnoldShader, ArnoldColorManager, CyclesShader : Improved browsers for file parameters (#5592, #5602) : - Added filtering by extension. - Added bookmarks. - USDLight : Added file browser for `shaping:ies:file` parameter. diff --git a/python/GafferCyclesUI/CyclesShaderUI.py b/python/GafferCyclesUI/CyclesShaderUI.py index a2dd5df1b2a..1905b0b964a 100644 --- a/python/GafferCyclesUI/CyclesShaderUI.py +++ b/python/GafferCyclesUI/CyclesShaderUI.py @@ -43,6 +43,7 @@ import Gaffer import GafferUI import GafferCycles +import GafferImage ########################################################################## # Build a registry of information retrieved from GafferCycles metadata. @@ -84,7 +85,12 @@ def __translateParamMetadata( nodeTypeName, socketName, value ) : __metadata[paramPath]["plugValueWidget:type"] = "GafferUI.PresetsPlugValueWidget" if( socketName == "filename" ) : - __metadata[paramPath]["plugValueWidget:type"] = "GafferUI.PathPlugValueWidget" + __metadata[paramPath]["plugValueWidget:type"] = "GafferUI.FileSystemPathPlugValueWidget" + __metadata[paramPath]["path:leaf"] = True + __metadata[paramPath]["path:valid"] = True + __metadata[paramPath]["path:bookmarks"] = "texture" + __metadata[paramPath]["fileSystemPath:extensions"] = " ".join( GafferImage.OpenImageIOReader.supportedExtensions() ) + __metadata[paramPath]["fileSystemPath:extensionsLabel"] = "Show only image files" __metadata[paramPath]["noduleLayout:visible"] = True __metadata[paramPath]["label"] = label