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
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 17 additions & 20 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,7 @@ jobs:
linux-gcc11,
linux-debug-gcc11,
windows,
windows-debug,
macos-arm64
windows-debug
]

include:
Expand All @@ -44,7 +43,7 @@ jobs:
buildType: RELEASE
containerImage: ghcr.io/gafferhq/build/build:3.0.0
options: .github/workflows/main/options.posix
dependenciesURL: https://github.com/GafferHQ/dependencies/releases/download/9.1.0/gafferDependencies-9.1.0-linux-gcc11.tar.gz
dependenciesURL: https://github.com/GafferHQ/dependencies/releases/download/10.0.0/gafferDependencies-10.0.0-linux-gcc11.tar.gz
tests: testCore testCorePython testScene testImage testAlembic testUSD testVDB
publish: true
jobs: 4
Expand All @@ -54,7 +53,7 @@ jobs:
buildType: DEBUG
containerImage: ghcr.io/gafferhq/build/build:3.0.0
options: .github/workflows/main/options.posix
dependenciesURL: https://github.com/GafferHQ/dependencies/releases/download/9.1.0/gafferDependencies-9.1.0-linux-gcc11.tar.gz
dependenciesURL: https://github.com/GafferHQ/dependencies/releases/download/10.0.0/gafferDependencies-10.0.0-linux-gcc11.tar.gz
tests: testCore testCorePython testScene testImage testAlembic testUSD testVDB
publish: false
jobs: 4
Expand All @@ -63,7 +62,7 @@ jobs:
os: windows-2022
buildType: RELEASE
options: .github/workflows/main/options.windows
dependenciesURL: https://github.com/GafferHQ/dependencies/releases/download/9.1.0/gafferDependencies-9.1.0-windows.zip
dependenciesURL: https://github.com/GafferHQ/dependencies/releases/download/10.0.0/gafferDependencies-10.0.0-windows.zip
tests: testCore testCorePython testScene testImage testAlembic testUSD testVDB
publish: true
jobs: 4
Expand All @@ -72,31 +71,29 @@ jobs:
os: windows-2022
buildType: RELWITHDEBINFO
options: .github/workflows/main/options.windows
dependenciesURL: https://github.com/GafferHQ/dependencies/releases/download/9.1.0/gafferDependencies-9.1.0-windows.zip
dependenciesURL: https://github.com/GafferHQ/dependencies/releases/download/10.0.0/gafferDependencies-10.0.0-windows.zip
tests: testCore testCorePython testScene testImage testAlembic testUSD testVDB
publish: false
jobs: 4

- name: macos-arm64
os: macos-14
buildType: RELEASE
options: .github/workflows/main/options.posix
dependenciesURL: https://github.com/GafferHQ/dependencies/releases/download/9.1.0/gafferDependencies-9.1.0-macos-arm64.tar.gz
tests: testCore testCorePython testScene testImage testAlembic testUSD testVDB
publish: true
jobs: 3

runs-on: ${{ matrix.os }}

container: ${{ matrix.containerImage }}

steps:

- uses: actions/checkout@v4
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2

- name: Install Windows SDK
run: |
curl.exe -L --output winsdksetup.exe --url https://download.microsoft.com/download/9/7/9/97982c1d-d687-41be-9dd3-6d01e52ceb68/windowssdk/winsdksetup.exe
Start-Process ./winsdksetup.exe -ArgumentList "/Features OptionId.DesktopCPPx64 /Quiet /NoRestart" -NoNewWindow -Wait
shell: pwsh
if: runner.os == 'Windows'

- uses: ilammy/msvc-dev-cmd@v1.13.0
- uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1.13.0
with:
sdk: 10.0.17763.0
sdk: 10.0.20348.0

- name: Install toolchain (Windows)
run: |
Expand Down Expand Up @@ -151,7 +148,7 @@ jobs:
shell: bash

- name: Cache
uses: actions/cache@v4
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
with:
path: sconsCache
key: ${{ runner.os }}-${{ matrix.containerImage }}-${{env.CORTEX_DEPENDENCIES_HASH}}-${{ matrix.buildType }}-${{ github.sha }}
Expand All @@ -177,7 +174,7 @@ jobs:
${{ env.PACKAGE_COMMAND }} ${{ env.CORTEX_BUILD_NAME }}.${{env.PACKAGE_EXTENSION}} ${{ env.CORTEX_BUILD_NAME }}
if: matrix.publish

- uses: actions/upload-artifact@v4
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: ${{ env.CORTEX_BUILD_NAME }}
path: ${{ env.CORTEX_BUILD_NAME }}.${{ env.PACKAGE_EXTENSION }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/main/options.posix
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ LIBPATH = libs

PYTHON = deps + "/bin/python"

pythonABIVersion = "3.10"
pythonABIVersion = "3.11"

PYTHON_LINK_FLAGS = "-lpython" + pythonABIVersion

Expand Down
5 changes: 5 additions & 0 deletions Changes
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,11 @@ Fixes

- USDScene : Worked around numerical imprecision when converting between time and UsdTimeCode.

Build
-----

- CI : Updated to GafferHQ/dependencies 10.0.0.

10.6.0.0 (relative to 10.5.15.2)
========

Expand Down
43 changes: 27 additions & 16 deletions SConstruct
Original file line number Diff line number Diff line change
Expand Up @@ -1167,46 +1167,47 @@ def pythonVersion( pythonEnv ) :
universal_newlines = True
).strip()

pythonEnv = env.Clone()
basePythonEnv = env.Clone()

# decide where python is
if pythonEnv["PYTHON"]=="" :
if basePythonEnv["PYTHON"]=="" :
if env["PLATFORM"] == "win32" :
sys.stderr.write( "ERROR : Python executable path must be set with PYTHON option.\n" )
Exit( 1 )
else:
pythonEnv["PYTHON"] = getPythonConfig( pythonEnv, "--exec-prefix" ) + "/bin/python"
basePythonEnv["PYTHON"] = getPythonConfig( basePythonEnv, "--exec-prefix" ) + "/bin/python"

# run it to determine version
pythonEnv["PYTHON_VERSION"] = pythonVersion( pythonEnv )
basePythonEnv["PYTHON_VERSION"] = pythonVersion( basePythonEnv )

# get the include path for python if we haven't been told it explicitly
# Windows does not have python-config so rely the user setting the appropriate options
if env["PLATFORM"] != "win32" :
if pythonEnv["PYTHON_INCLUDE_PATH"]=="" :
pythonEnv["PYTHON_INCLUDE_FLAGS"] = getPythonConfig( pythonEnv, "--includes" ).split()
if basePythonEnv["PYTHON_INCLUDE_PATH"]=="" :
basePythonEnv["PYTHON_INCLUDE_FLAGS"] = getPythonConfig( basePythonEnv, "--includes" ).split()
else :
pythonEnv["PYTHON_INCLUDE_FLAGS"] = [ systemIncludeArgument, "$PYTHON_INCLUDE_PATH" ]
basePythonEnv["PYTHON_INCLUDE_FLAGS"] = [ systemIncludeArgument, "$PYTHON_INCLUDE_PATH" ]

pythonEnv.Append( CXXFLAGS = "$PYTHON_INCLUDE_FLAGS" )
basePythonEnv.Append( CXXFLAGS = "$PYTHON_INCLUDE_FLAGS" )

if env["PLATFORM"] == "posix" :
## We really want to not have the -Wno-strict-aliasing flag, but it's necessary to stop boost
# python warnings that don't seem to be prevented by including boost via -isystem even. Better to
# be able to have -Werror but be missing one warning than to have no -Werror.
## \todo This is probably only necessary for specific gcc versions where -isystem doesn't
# fully work. Reenable when we encounter versions that work correctly.
pythonEnv.Append( CXXFLAGS = [ "-Wno-strict-aliasing" ] )
basePythonEnv.Append( CXXFLAGS = [ "-Wno-strict-aliasing" ] )

# get the python link flags
if pythonEnv["PYTHON_LINK_FLAGS"]=="" :
pythonEnv["PYTHON_LINK_FLAGS"] = getPythonConfig( pythonEnv, "--ldflags" )
pythonEnv["PYTHON_LINK_FLAGS"] = pythonEnv["PYTHON_LINK_FLAGS"].replace( "Python.framework/Versions/" + pythonEnv["PYTHON_VERSION"] + "/Python", "" )
if basePythonEnv["PYTHON_LINK_FLAGS"]=="" :
basePythonEnv["PYTHON_LINK_FLAGS"] = getPythonConfig( basePythonEnv, "--ldflags" )
basePythonEnv["PYTHON_LINK_FLAGS"] = basePythonEnv["PYTHON_LINK_FLAGS"].replace( "Python.framework/Versions/" + basePythonEnv["PYTHON_VERSION"] + "/Python", "" )

pythonEnv.Append( SHLINKFLAGS = pythonEnv["PYTHON_LINK_FLAGS"].split() )
basePythonEnv.Append( SHLINKFLAGS = basePythonEnv["PYTHON_LINK_FLAGS"].split() )
else :
pythonEnv["PYTHON_INCLUDE_FLAGS"] = ""
basePythonEnv["PYTHON_INCLUDE_FLAGS"] = ""

pythonEnv = basePythonEnv.Clone()
pythonEnv.Append( CPPFLAGS = "-DBOOST_PYTHON_MAX_ARITY=20" )

# if BOOST_PYTHON_LIB_SUFFIX is provided, use it
Expand Down Expand Up @@ -2066,9 +2067,9 @@ usdEnvSets = {
"IECORE_NAME" : "IECoreUSD"
}

# We are deliberately cloning from `pythonEnv` rather than
# We are deliberately cloning from `basePythonEnv` rather than
# `env` because USD itself has dependencies on Python.
usdEnv = pythonEnv.Clone( **usdEnvSets )
usdEnv = basePythonEnv.Clone( **usdEnvSets )

if usdEnv["WITH_USD_MONOLITHIC"] :
usdLibs = [ "usd_ms" ]
Expand Down Expand Up @@ -2097,10 +2098,20 @@ else :
if usdEnv["USD_LIB_PREFIX"] :
usdLibs = [ usdEnv["USD_LIB_PREFIX"] + x for x in usdLibs ]

usdPythonLib = env.subst( "boost_python$BOOST_PYTHON_LIB_SUFFIX" )
pxrVersionHeader = env.FindFile( "pxr/pxr.h", dependencyIncludes )
if pxrVersionHeader is not None and "#define PXR_USE_INTERNAL_BOOST_PYTHON\n" in open( str( pxrVersionHeader ) ) :
usdPythonLib = usdEnv["USD_LIB_PREFIX"] + "python"

usdLibs.append( usdPythonLib )

usdEnvAppends = {
"CXXFLAGS" : [
"-Wno-deprecated" if env["PLATFORM"] != "win32" else "",
"/Zc:inline-" if env["PLATFORM"] == "win32" else "",
# This warning is already disabled generally for release builds,
# but also requires disabling for debug builds with USD.
"/wd4702" if env["PLATFORM"] == "win32" else "",
"-DIECoreUSD_EXPORTS",
systemIncludeArgument, "$USD_INCLUDE_PATH",
systemIncludeArgument, "$PYTHON_INCLUDE_PATH",
Expand Down
1 change: 1 addition & 0 deletions src/IECoreScene/ShaderNetworkAlgo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@
#include "boost/container/flat_map.hpp"
#include "boost/regex.hpp"

#include <array>
#include <unordered_map>
#include <unordered_set>

Expand Down