From 26c86195935f5365685bfefe046f0ac7e98fa231 Mon Sep 17 00:00:00 2001 From: Kimball Thurston Date: Sat, 8 Sep 2018 18:09:01 +1200 Subject: [PATCH 01/17] fix standalone and combined cmake This puts the version numbers into one file, and the settings and variables for building into another, that is then replicated and conditionally included when building a standalone package. Signed-off-by: Kimball Thurston --- CMakeLists.txt | 108 +-------------------------------- IlmBase/CMakeLists.txt | 32 +++++++--- IlmBase/Makefile.am | 5 +- IlmBase/README.md | 3 + OpenEXR/CMakeLists.txt | 18 +++++- OpenEXR/Makefile.am | 8 ++- OpenEXR/README.md | 3 + OpenEXR_Viewers/CMakeLists.txt | 18 +++++- OpenEXR_Viewers/Makefile.am | 6 +- PyIlmBase/CMakeLists.txt | 28 ++++++++- PyIlmBase/Makefile.am | 9 ++- cmake/OpenEXRSettings.cmake | 98 ++++++++++++++++++++++++++++++ cmake/OpenEXRVersion.cmake | 8 +++ 13 files changed, 221 insertions(+), 123 deletions(-) create mode 100644 cmake/OpenEXRSettings.cmake create mode 100644 cmake/OpenEXRVersion.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index b06d97eedc..3001d520a1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,112 +4,13 @@ ELSE() CMAKE_MINIMUM_REQUIRED(VERSION 3.2) ENDIF() -# Version -set(OPENEXR_VERSION_MAJOR 2) -set(OPENEXR_VERSION_MINOR 3) -set(OPENEXR_VERSION_PATCH 0) -set(OPENEXR_VERSION ${OPENEXR_VERSION_MAJOR}.${OPENEXR_VERSION_MINOR}.${OPENEXR_VERSION_PATCH}) -set(OPENEXR_VERSION_API ${OPENEXR_VERSION_MAJOR}_${OPENEXR_VERSION_MINOR}) -set(OPENEXR_SOVERSION 24) - -project(OpenEXR VERSION ${OPENEXR_VERSION}) - set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake) -#set(OPENEXR_LOCATION ${CMAKE_INSTALL_PREFIX}) - -#------------------------------------------------------------------------------- -# The following user options are cached. They are named with the OPENEXR -# prefix in order that they be grouped together in tools such as ccmake and cmake-gui. - -option(OPENEXR_BUILD_ILMBASE "Build IlmBase" ON) -option(OPENEXR_BUILD_OPENEXR "Build OpenEXR" ON) -option(OPENEXR_BUILD_PYTHON_LIBS "Build the Python bindings" ON) -option(OPENEXR_BUILD_VIEWERS "Build the viewers" OFF) -option(OPENEXR_BUILD_TESTS "Enable the tests" ON) -# when enabled, adds the (long) running fuzz tests to the "make test" rule -# even when this is disabled, as long as OPENEXR_BUILD_TESTS is enabled, one -# can still run "make fuzz" (or equivalent) -option(OPENEXR_RUN_FUZZ_TESTS "Run damaged-input tests" OFF) -option(OPENEXR_BUILD_UTILS "Build the utility programs" ON) - -option(OPENEXR_BUILD_SHARED "Build Shared Libraries" ON) -option(OPENEXR_BUILD_STATIC "Build Static Libraries" OFF) -option(OPENEXR_NAMESPACE_VERSIONING "Use Namespace Versioning" ON) -option(OPENEXR_FORCE_CXX03 "Force CXX03" OFF) -set(OPENEXR_PYTHON_MAJOR "2" CACHE STRING "Python major version") -set(OPENEXR_PYTHON_MINOR "7" CACHE STRING "Python minor version") - -# For more info on finding boost python: -# https://cmake.org/cmake/help/v3.11/module/FindBoost.html - -# end of user options -#------------------------------------------------------------------------------- +include(OpenEXRVersion) -if (OPENEXR_BUILD_VIEWERS AND NOT OPENEXR_BUILD_OPENEXR) - message(ERROR, "Configuration error, enable OPENEXR_BUILD_OPENEXR for OPENEXR_BUILD_VIEWERS") -endif() - -if (WIN32 AND OPENEXR_BUILD_ILMBASE AND OPENEXR_BUILD_OPENEXR AND OPENEXR_BUILD_SHARED) - # necessary for building dwa lookup tables, and b44log tables on windows - set(BUILD_ILMBASE_STATIC ON) -elseif (OPENEXR_BUILD_ILMBASE AND OPENEXR_BUILD_STATIC) - set(BUILD_ILMBASE_STATIC ON) -else() - set(BUILD_ILMBASE_STATIC OFF) -endif() - -if (NOT OPENEXR_BUILD_SHARED) - set(OPENEXR_TARGET_SUFFIX _static) -endif() - -# Testing -set(ENABLE_TESTS ${OPENEXR_BUILD_TESTS}) -if(ENABLE_TESTS) - include(CTest) - enable_testing() -endif() - -# CPACK -set(CPACK_PROJECT_NAME ${PROJECT_NAME}) -set(CPACK_PROJECT_VERSION ${PROJECT_VERSION}) -set(CPACK_SOURCE_IGNORE_FILES "/.git*;/.cvs*;${CPACK_SOURCE_IGNORE_FILES}") -set(CPACK_SOURCE_GENERATOR "TGZ") -set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${OPENEXR_VERSION}" ) -include(CPack) - -# Configuration -if(OPENEXR_FORCE_CXX03) - ADD_DEFINITIONS ( -std=c++03 ) -else(OPENEXR_FORCE_CXX03) - # VP18 switches to c++14, so let's do that by default - set(CMAKE_CXX_STANDARD 14 CACHE STRING "C++ ISO Standard") - # but switch gnu++14 or other extensions off for portability - set(CMAKE_CXX_EXTENSIONS OFF) -endif() - -add_definitions( -DHAVE_CONFIG_H ) - -if(NOT WIN32) - add_definitions( -pthread ) -endif() - -if(WIN32) - set(RUNTIME_DIR bin) -else() - set(RUNTIME_DIR lib) -endif() - -set(OPENEXR_LIBSUFFIX "") -set(ILMBASE_LIBSUFFIX "") -if(OPENEXR_NAMESPACE_VERSIONING) - set( OPENEXR_LIBSUFFIX "-${OPENEXR_VERSION_API}" ) - set( ILMBASE_LIBSUFFIX "-${OPENEXR_VERSION_API}" ) -endif() +project(OpenEXR VERSION ${OPENEXR_VERSION}) -# MacOs/linux rpathing -set(CMAKE_MACOSX_RPATH 1) -set(BUILD_WITH_INSTALL_RPATH 1) +include(OpenEXRSettings) # Packages find_package(ZLIB) @@ -170,9 +71,6 @@ if ((OPENEXR_BUILD_UTILS OR OPENEXR_BUILD_TESTS OR OPENEXR_BUILD_VIEWERS) AND NO endif() endif() -# Set position independent code (mostly for static builds, but not a bad idea regardless) -set(CMAKE_POSITION_INDEPENDENT_CODE ON) - # Perform the build if(OPENEXR_BUILD_ILMBASE) add_subdirectory(IlmBase) diff --git a/IlmBase/CMakeLists.txt b/IlmBase/CMakeLists.txt index e13c768651..488dc0eeb0 100644 --- a/IlmBase/CMakeLists.txt +++ b/IlmBase/CMakeLists.txt @@ -5,14 +5,30 @@ ELSE() CMAKE_MINIMUM_REQUIRED(VERSION 3.2) ENDIF() -PROJECT ( ilmbase ) - -set(ILMBASE_BASEVERSION ${OPENEXR_BASEVERSION}) -set(ILMBASE_VERSION_MAJOR ${OPENEXR_VERSION_MAJOR}) -set(ILMBASE_VERSION_MINOR ${OPENEXR_VERSION_MINOR}) -set(ILMBASE_VERSION_PATCH ${OPENEXR_VERSION_PATCH}) -set(ILMBASE_VERSION ${OPENEXR_VERSION}) -set(ILMBASE_VERSION_API ${OPENEXR_VERSION_API}) +# test if we are being built as a standalone library or if +# we are being built as part of the overall project +IF(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) + IF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/cmake) + SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake) + ELSE() + MESSAGE(FATAL_ERROR "Please compile using the top-level CMakeLists.txt or a pre-built package") + ENDIF() + INCLUDE(OpenEXRVersion) + SET(ILMBASE_STANDALONE ON) +ENDIF() + +SET(ILMBASE_BASEVERSION ${OPENEXR_BASEVERSION}) +SET(ILMBASE_VERSION_MAJOR ${OPENEXR_VERSION_MAJOR}) +SET(ILMBASE_VERSION_MINOR ${OPENEXR_VERSION_MINOR}) +SET(ILMBASE_VERSION_PATCH ${OPENEXR_VERSION_PATCH}) +SET(ILMBASE_VERSION ${OPENEXR_VERSION}) +SET(ILMBASE_VERSION_API ${OPENEXR_VERSION_API}) + +PROJECT(ilmbase VERSION ${ILMBASE_VERSION}) + +IF(ILMBASE_STANDALONE) + INCLUDE(OpenEXRSettings) +ENDIF() INCLUDE_DIRECTORIES ( Iex IexMath Imath Half IlmThread IexTest ImathTest HalfTest diff --git a/IlmBase/Makefile.am b/IlmBase/Makefile.am index 1989d7d4be..5223a7649d 100644 --- a/IlmBase/Makefile.am +++ b/IlmBase/Makefile.am @@ -18,8 +18,11 @@ EXTRA_DIST = \ README.md \ bootstrap \ config.windows/IlmBaseConfig.h \ - CMakeLists.txt + CMakeLists.txt +dist-hook: + cp -fpR $(abspath $(srcdir)/..)/cmake $(distdir) + find $(distdir)/cmake -type d ! -perm -700 -exec chmod u+rwx {} \; pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = IlmBase.pc diff --git a/IlmBase/README.md b/IlmBase/README.md index 7a5ccd8708..54ff55ad4f 100644 --- a/IlmBase/README.md +++ b/IlmBase/README.md @@ -62,6 +62,9 @@ configuration scripts by running ``bootstrap``, then ``configure`` and make make install +Optionally, compiling from git using cmake, one can use the top level +CMakeLists.txt file to build all the libraries at once. + #### Building on Windows using **cmake** To generate Visual Studio solution files and build the libraries: diff --git a/OpenEXR/CMakeLists.txt b/OpenEXR/CMakeLists.txt index 9ddafa832e..1df2d27e65 100644 --- a/OpenEXR/CMakeLists.txt +++ b/OpenEXR/CMakeLists.txt @@ -4,7 +4,23 @@ ELSE() CMAKE_MINIMUM_REQUIRED(VERSION 3.2) ENDIF() -PROJECT (openexr) +# test if we are being built as a standalone library or if +# we are being built as part of the overall project +IF(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) + IF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/cmake) + SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake) + ELSE() + MESSAGE(FATAL_ERROR "Please compile using the top-level CMakeLists.txt or a pre-built package") + ENDIF() + INCLUDE(OpenEXRVersion) + SET(OPENEXR_STANDALONE ON) +ENDIF() + +PROJECT (openexr VERSION ${OPENEXR_VERSION}) + +IF(OPENEXR_STANDALONE) + INCLUDE(OpenEXRSettings) +ENDIF() IF (NOT ILMBASE_PACKAGE_PREFIX) SET (ILMBASE_PACKAGE_PREFIX ${CMAKE_INSTALL_PREFIX}) diff --git a/OpenEXR/Makefile.am b/OpenEXR/Makefile.am index 492a093b7a..43e1979fb1 100644 --- a/OpenEXR/Makefile.am +++ b/OpenEXR/Makefile.am @@ -13,10 +13,14 @@ DIST_SUBDIRS = \ EXTRA_DIST = \ AUTHORS ChangeLog LICENSE NEWS PATENTS \ - README.md \ + README.md \ bootstrap openexr.m4 \ config.windows/OpenEXRConfig.h \ - CMakeLists.txt + CMakeLists.txt + +dist-hook: + cp -fpR $(abspath $(srcdir)/..)/cmake $(distdir) + find $(distdir)/cmake -type d ! -perm -700 -exec chmod u+rwx {} \; pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = OpenEXR.pc diff --git a/OpenEXR/README.md b/OpenEXR/README.md index 1fdaf2dfab..4b69baf085 100644 --- a/OpenEXR/README.md +++ b/OpenEXR/README.md @@ -78,6 +78,9 @@ configuration scripts by running ``bootstrap``, then ``configure`` and make make install +Optionally, compiling from git using cmake, one can use the top level +CMakeLists.txt file to build all the libraries at once. + #### Building on Windows using **cmake** #### Building on **macOS** diff --git a/OpenEXR_Viewers/CMakeLists.txt b/OpenEXR_Viewers/CMakeLists.txt index 7d58f99f56..f324bdfbb4 100644 --- a/OpenEXR_Viewers/CMakeLists.txt +++ b/OpenEXR_Viewers/CMakeLists.txt @@ -4,7 +4,23 @@ ELSE() CMAKE_MINIMUM_REQUIRED(VERSION 3.2) ENDIF() -PROJECT (openexr_viewers) +# test if we are being built as a standalone library or if +# we are being built as part of the overall project +IF(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) + IF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/cmake) + SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake) + ELSE() + MESSAGE(FATAL_ERROR "Please compile using the top-level CMakeLists.txt or a pre-built package") + ENDIF() + INCLUDE(OpenEXRVersion) + SET(OPENEXR_VIEWERS_STANDALONE ON) +ENDIF() + +PROJECT (openexr_viewers VERSION ${OPENEXR_VERSION}) + +IF(OPENEXR_VIEWERS_STANDALONE) + INCLUDE(OpenEXRSettings) +ENDIF() IF (NOT ILMBASE_PACKAGE_PREFIX) SET (ILMBASE_PACKAGE_PREFIX ${CMAKE_INSTALL_PREFIX}) diff --git a/OpenEXR_Viewers/Makefile.am b/OpenEXR_Viewers/Makefile.am index 6eb758a96d..0b30630672 100644 --- a/OpenEXR_Viewers/Makefile.am +++ b/OpenEXR_Viewers/Makefile.am @@ -10,7 +10,11 @@ DIST_SUBDIRS = \ EXTRA_DIST = \ ChangeLog \ LICENSE \ - README.md \ + README.md \ bootstrap +dist-hook: + cp -fpR $(abspath $(srcdir)/..)/cmake $(distdir) + find $(distdir)/cmake -type d ! -perm -700 -exec chmod u+rwx {} \; + diff --git a/PyIlmBase/CMakeLists.txt b/PyIlmBase/CMakeLists.txt index 5c70f3140b..6513dfe0d2 100644 --- a/PyIlmBase/CMakeLists.txt +++ b/PyIlmBase/CMakeLists.txt @@ -1,5 +1,31 @@ -PROJECT (pyilmbase) +IF (WIN32) + CMAKE_MINIMUM_REQUIRED(VERSION 3.11) +ELSE() + CMAKE_MINIMUM_REQUIRED(VERSION 3.2) +ENDIF() + +# test if we are being built as a standalone library or if +# we are being built as part of the overall project +IF(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) + IF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/cmake) + SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake) + ELSE() + MESSAGE(FATAL_ERROR "Please compile using the top-level CMakeLists.txt or a pre-built package") + ENDIF() + INCLUDE(OpenEXRVersion) + SET(PYILMBASE_STANDALONE ON) +ENDIF() + +PROJECT (pyilmbase VERSION ${OPENEXR_VERSION}) + +IF(PYILMBASE_STANDALONE) + INCLUDE(OpenEXRSettings) +ENDIF() + +IF (NOT ILMBASE_PACKAGE_PREFIX) + SET (ILMBASE_PACKAGE_PREFIX ${CMAKE_INSTALL_PREFIX}) +ENDIF () IF (OPENEXR_BUILD_SHARED) # User wants to build Dynamic Libraries, so change the LIB_TYPE variable to CMake keyword 'SHARED' diff --git a/PyIlmBase/Makefile.am b/PyIlmBase/Makefile.am index ec19b002bd..91318e5acd 100644 --- a/PyIlmBase/Makefile.am +++ b/PyIlmBase/Makefile.am @@ -15,16 +15,19 @@ SUBDIRS = $(PYIMATH_SUBDIRS) $(MAYBE_PYIMATHNUMPY_SUBDIRS) DIST_SUBDIRS = \ $(PYIMATH_SUBDIRS) \ - $(PYIMATHNUMPY_SUBDIRS) \ - #vc + $(PYIMATHNUMPY_SUBDIRS) EXTRA_DIST = \ LICENSE README.md \ ChangeLog \ - bootstrap \ + bootstrap \ pyilmbase.m4 \ config.windows/PyIlmBaseConfig.h +dist-hook: + cp -fpR $(abspath $(srcdir)/..)/cmake $(distdir) + find $(distdir)/cmake -type d ! -perm -700 -exec chmod u+rwx {} \; + pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = PyIlmBase.pc diff --git a/cmake/OpenEXRSettings.cmake b/cmake/OpenEXRSettings.cmake new file mode 100644 index 0000000000..bbceec4497 --- /dev/null +++ b/cmake/OpenEXRSettings.cmake @@ -0,0 +1,98 @@ +#set(OPENEXR_LOCATION ${CMAKE_INSTALL_PREFIX}) + +#------------------------------------------------------------------------------- +# The following user options are cached. They are named with the OPENEXR +# prefix in order that they be grouped together in tools such as ccmake and cmake-gui. + +option(OPENEXR_BUILD_ILMBASE "Build IlmBase" ON) +option(OPENEXR_BUILD_OPENEXR "Build OpenEXR" ON) +option(OPENEXR_BUILD_PYTHON_LIBS "Build the Python bindings" ON) +option(OPENEXR_BUILD_VIEWERS "Build the viewers" OFF) +option(OPENEXR_BUILD_TESTS "Enable the tests" ON) +# when enabled, adds the (long) running fuzz tests to the "make test" rule +# even when this is disabled, as long as OPENEXR_BUILD_TESTS is enabled, one +# can still run "make fuzz" (or equivalent) +option(OPENEXR_RUN_FUZZ_TESTS "Run damaged-input tests" OFF) +option(OPENEXR_BUILD_UTILS "Build the utility programs" ON) + +option(OPENEXR_BUILD_SHARED "Build Shared Libraries" ON) +option(OPENEXR_BUILD_STATIC "Build Static Libraries" OFF) +option(OPENEXR_NAMESPACE_VERSIONING "Use Namespace Versioning" ON) +option(OPENEXR_FORCE_CXX03 "Force CXX03" OFF) +set(OPENEXR_PYTHON_MAJOR "2" CACHE STRING "Python major version") +set(OPENEXR_PYTHON_MINOR "7" CACHE STRING "Python minor version") + +# For more info on finding boost python: +# https://cmake.org/cmake/help/v3.11/module/FindBoost.html + +# end of user options +#------------------------------------------------------------------------------- + + +if (OPENEXR_BUILD_VIEWERS AND NOT OPENEXR_BUILD_OPENEXR) + message(ERROR, "Configuration error, enable OPENEXR_BUILD_OPENEXR for OPENEXR_BUILD_VIEWERS") +endif() + +if (WIN32 AND OPENEXR_BUILD_ILMBASE AND OPENEXR_BUILD_OPENEXR AND OPENEXR_BUILD_SHARED) + # necessary for building dwa lookup tables, and b44log tables on windows + set(BUILD_ILMBASE_STATIC ON) +elseif (OPENEXR_BUILD_ILMBASE AND OPENEXR_BUILD_STATIC) + set(BUILD_ILMBASE_STATIC ON) +else() + set(BUILD_ILMBASE_STATIC OFF) +endif() + +if (NOT OPENEXR_BUILD_SHARED) + set(OPENEXR_TARGET_SUFFIX _static) +endif() + +# Testing +set(ENABLE_TESTS ${OPENEXR_BUILD_TESTS}) +if(ENABLE_TESTS) + include(CTest) + enable_testing() +endif() + +# CPACK +set(CPACK_PROJECT_NAME ${PROJECT_NAME}) +set(CPACK_PROJECT_VERSION ${PROJECT_VERSION}) +set(CPACK_SOURCE_IGNORE_FILES "/.git*;/.cvs*;${CPACK_SOURCE_IGNORE_FILES}") +set(CPACK_SOURCE_GENERATOR "TGZ") +set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${OPENEXR_VERSION}" ) +include(CPack) + +# Configuration +if(OPENEXR_FORCE_CXX03) + ADD_DEFINITIONS ( -std=c++03 ) +else(OPENEXR_FORCE_CXX03) + # VP18 switches to c++14, so let's do that by default + set(CMAKE_CXX_STANDARD 14 CACHE STRING "C++ ISO Standard") + # but switch gnu++14 or other extensions off for portability + set(CMAKE_CXX_EXTENSIONS OFF) +endif() + +add_definitions( -DHAVE_CONFIG_H ) + +if(NOT WIN32) + add_definitions( -pthread ) +endif() + +if(WIN32) + set(RUNTIME_DIR bin) +else() + set(RUNTIME_DIR lib) +endif() + +set(OPENEXR_LIBSUFFIX "") +set(ILMBASE_LIBSUFFIX "") +if(OPENEXR_NAMESPACE_VERSIONING) + set( OPENEXR_LIBSUFFIX "-${OPENEXR_VERSION_API}" ) + set( ILMBASE_LIBSUFFIX "-${OPENEXR_VERSION_API}" ) +endif() + +# MacOs/linux rpathing +set(CMAKE_MACOSX_RPATH 1) +set(BUILD_WITH_INSTALL_RPATH 1) + +# Set position independent code (mostly for static builds, but not a bad idea regardless) +set(CMAKE_POSITION_INDEPENDENT_CODE ON) diff --git a/cmake/OpenEXRVersion.cmake b/cmake/OpenEXRVersion.cmake new file mode 100644 index 0000000000..82f0086985 --- /dev/null +++ b/cmake/OpenEXRVersion.cmake @@ -0,0 +1,8 @@ +# Version +set(OPENEXR_VERSION_MAJOR 2) +set(OPENEXR_VERSION_MINOR 3) +set(OPENEXR_VERSION_PATCH 0) +set(OPENEXR_VERSION ${OPENEXR_VERSION_MAJOR}.${OPENEXR_VERSION_MINOR}.${OPENEXR_VERSION_PATCH}) +set(OPENEXR_VERSION_API ${OPENEXR_VERSION_MAJOR}_${OPENEXR_VERSION_MINOR}) +set(OPENEXR_SOVERSION 24) + From c2557b73c97c5dfb9e3eeff6b7622566edcfb54b Mon Sep 17 00:00:00 2001 From: mancoast Date: Sat, 15 Sep 2018 06:32:34 -0400 Subject: [PATCH 02/17] Rebuild OpenEXR NuGet with 2.3 source and enable exrviewer for testing purposes --- .../NuGet/OpenEXR-msvc-x64-build.nuget.bat | 146 ++++++++++++++++++ Contrib/NuGet/OpenEXR-msvc-x64.nuspec | 15 ++ Contrib/NuGet/OpenEXR-msvc-x64.targets | 29 ++++ .../NuGet/OpenEXR-msvc-x86-build.nuget.bat | 146 ++++++++++++++++++ Contrib/NuGet/OpenEXR-msvc-x86.nuspec | 15 ++ Contrib/NuGet/OpenEXR-msvc-x86.targets | 29 ++++ OpenEXR_Viewers/exrdisplay/CMakeLists.txt | 4 + 7 files changed, 384 insertions(+) create mode 100644 Contrib/NuGet/OpenEXR-msvc-x64-build.nuget.bat create mode 100644 Contrib/NuGet/OpenEXR-msvc-x64.nuspec create mode 100644 Contrib/NuGet/OpenEXR-msvc-x64.targets create mode 100644 Contrib/NuGet/OpenEXR-msvc-x86-build.nuget.bat create mode 100644 Contrib/NuGet/OpenEXR-msvc-x86.nuspec create mode 100644 Contrib/NuGet/OpenEXR-msvc-x86.targets diff --git a/Contrib/NuGet/OpenEXR-msvc-x64-build.nuget.bat b/Contrib/NuGet/OpenEXR-msvc-x64-build.nuget.bat new file mode 100644 index 0000000000..53fad38f4c --- /dev/null +++ b/Contrib/NuGet/OpenEXR-msvc-x64-build.nuget.bat @@ -0,0 +1,146 @@ +REM @echo off + +Echo LIB Windows Build NuGet + +REM # Build Vars # +set _SCRIPT_DRIVE=%~d0 +set _SCRIPT_FOLDER=%~dp0 +set INITDIR=%_SCRIPT_FOLDER% +set SRC=%INITDIR%\..\..\ +set BUILDTREE=%SRC%\build-win\ +SET tbs_arch=x64 +SET vcvar_arg=x86_amd64 +SET cmake_platform="Visual Studio 15 2017 Win64" + +REM # VC Vars # +SET VCVAR="%programfiles(x86)%\Microsoft Visual Studio\2017\Professional\VC\Auxiliary\Build\vcvarsall.bat" +if exist %VCVAR% call %VCVAR% %vcvar_arg% +SET VCVAR="%programfiles(x86)%\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" +if exist %VCVAR% call %VCVAR% %vcvar_arg% + +REM # Clean Build Tree # +rd /s /q %BUILDTREE% +mkdir %BUILDTREE% +mkdir %BUILDTREE%\deps + +REM # Change to Build Tree drive # +%_SCRIPT_DRIVE% +REM # Change to Build Tree directory # +cd %BUILDTREE% + +:nuget_Dep +REM # packages from nuget # +mkdir %BUILDTREE%\deps +cd %BUILDTREE%\deps +SET VER=1.2.11.8899 +set ZLIBDIR=%BUILDTREE%\deps\zlib-msvc-%tbs_arch%.%VER%\build\native +nuget install zlib-msvc-%tbs_arch% -Version %VER% +SET VER=1.3.4.8788 +set FLTKDIR=%BUILDTREE%\deps\FLTK-msvc-%tbs_arch%.%VER%\build\native +nuget install FLTK-msvc-%tbs_arch% -Version %VER% + +:copy_files +set BINDIR=%SRC%\build-nuget\ +rd /s /q %BINDIR% +mkdir %BINDIR% +mkdir %BINDIR%\lib +set PATH=%BINDIR%\lib;%PATH% +echo %BINDIR% + +:static_LIB +REM # LIB STATIC # +ECHO %cmake_platform% STATIC + +rd /s /q %BUILDTREE%\OpenEXR +mkdir %BUILDTREE%\OpenEXR +cd %BUILDTREE%\OpenEXR +cmake -G %cmake_platform% ^ +-DBUILD_ILMBASE_STATIC:BOOL=ON ^ +-DOPENEXR_BUILD_ILMBASE:BOOL=ON ^ +-DOPENEXR_BUILD_OPENEXR:BOOL=ON ^ +-DOPENEXR_BUILD_PYTHON_LIBS:BOOL=OFF ^ +-DOPENEXR_BUILD_VIEWERS:BOOL=ON ^ +-DOPENEXR_BUILD_TESTS:BOOL=ON ^ +-DOPENEXR_RUN_FUZZ_TESTS:BOOL=OFF ^ +-DOPENEXR_BUILD_UTILS:BOOL=ON ^ +-DOPENEXR_BUILD_SHARED:BOOL=OFF ^ +-DOPENEXR_BUILD_STATIC:BOOL=ON ^ +-DCMAKE_CXX_FLAGS_RELEASE="/MD" ^ +-DCMAKE_CXX_FLAGS_DEBUG="/MDd" ^ +-DCMAKE_C_FLAGS_RELEASE="/MD" ^ +-DCMAKE_C_FLAGS_DEBUG="/MDd" ^ +-DZLIB_LIBRARY=%ZLIBDIR%\lib_release\zlibstatic.lib ^ +-DZLIB_INCLUDE_DIR=%ZLIBDIR%\include ^ +-DFLTK_BASE_LIBRARY_RELEASE=%FLTKDIR%\lib_release\fltk.lib ^ +-DFLTK_GL_LIBRARY_RELEASE=%FLTKDIR%\lib_release\fltk_gl.lib ^ +-DFLTK_FORMS_LIBRARY_RELEASE=%FLTKDIR%\lib_release\fltk_forms.lib ^ +-DFLTK_IMAGES_LIBRARY_RELEASE=%FLTKDIR%\lib_release\fltk_images.lib ^ +-DFLTK_BASE_LIBRARY_DEBUG=%FLTKDIR%\lib_debug\fltkd.lib ^ +-DFLTK_GL_LIBRARY_DEBUG=%FLTKDIR%\lib_debug\fltk_gld.lib ^ +-DFLTK_FORMS_LIBRARY_DEBUG=%FLTKDIR%\lib_debug\fltk_formsd.lib ^ +-DFLTK_IMAGES_LIBRARY_DEBUG=%FLTKDIR%\lib_debug\fltk_imagesd.lib ^ +-DFLTK_INCLUDE_DIR=%FLTKDIR%\include ^ +-DCMAKE_INSTALL_PREFIX=%BINDIR% ^ +-DCMAKE_BUILD_TYPE="Release" %SRC% +cmake --build . --config Release --target install + +move %BINDIR%lib %BINDIR%lib_release +move %BINDIR%bin %BINDIR%bin_release + +REM # DEBUG # +REM # Clean Build Tree # +rd /s /q %BUILDTREE%\OpenEXR +mkdir %BUILDTREE%\OpenEXR +cd %BUILDTREE%\OpenEXR +cmake -G %cmake_platform% ^ +-DBUILD_ILMBASE_STATIC:BOOL=ON ^ +-DOPENEXR_BUILD_ILMBASE:BOOL=ON ^ +-DOPENEXR_BUILD_OPENEXR:BOOL=ON ^ +-DOPENEXR_BUILD_PYTHON_LIBS:BOOL=OFF ^ +-DOPENEXR_BUILD_VIEWERS:BOOL=ON ^ +-DOPENEXR_BUILD_TESTS:BOOL=ON ^ +-DOPENEXR_RUN_FUZZ_TESTS:BOOL=OFF ^ +-DOPENEXR_BUILD_UTILS:BOOL=ON ^ +-DOPENEXR_BUILD_SHARED:BOOL=OFF ^ +-DOPENEXR_BUILD_STATIC:BOOL=ON ^ +-DCMAKE_CXX_FLAGS_RELEASE="/MD" ^ +-DCMAKE_CXX_FLAGS_DEBUG="/MDd" ^ +-DCMAKE_C_FLAGS_RELEASE="/MD" ^ +-DCMAKE_C_FLAGS_DEBUG="/MDd" ^ +-DZLIB_LIBRARY=%ZLIBDIR%\lib_debug\zlibstaticd.lib ^ +-DZLIB_INCLUDE_DIR=%ZLIBDIR%\include ^ +-DFLTK_BASE_LIBRARY_RELEASE=%FLTKDIR%\lib_release\fltk.lib ^ +-DFLTK_GL_LIBRARY_RELEASE=%FLTKDIR%\lib_release\fltk_gl.lib ^ +-DFLTK_FORMS_LIBRARY_RELEASE=%FLTKDIR%\lib_release\fltk_forms.lib ^ +-DFLTK_IMAGES_LIBRARY_RELEASE=%FLTKDIR%\lib_release\fltk_images.lib ^ +-DFLTK_BASE_LIBRARY_DEBUG=%FLTKDIR%\lib_debug\fltkd.lib ^ +-DFLTK_GL_LIBRARY_DEBUG=%FLTKDIR%\lib_debug\fltk_gld.lib ^ +-DFLTK_FORMS_LIBRARY_DEBUG=%FLTKDIR%\lib_debug\fltk_formsd.lib ^ +-DFLTK_IMAGES_LIBRARY_DEBUG=%FLTKDIR%\lib_debug\fltk_imagesd.lib ^ +-DFLTK_INCLUDE_DIR=%FLTKDIR%\include ^ +-DCMAKE_INSTALL_PREFIX=%BINDIR% ^ +-DCMAKE_BUILD_TYPE="DEBUG" %SRC% +cmake --build . --config DEBUG --target install + +move %BINDIR%lib %BINDIR%lib_debug +move %BINDIR%bin %BINDIR%bin_debug + +REM # TODO: ENABLE SHARED Build +GOTO:nuget_req +mkdir %BINDIR%\static\ +move /Y %BINDIR%\lib %BINDIR%\static\ + +:shared_LIB +REM # LIB SHARED # +ECHO %cmake_platform% SHARED + + +:nuget_req +cd %BINDIR% +REM # make nuget packages from binaries # +copy %INITDIR%\OpenEXR-msvc-%tbs_arch%.targets %BINDIR%\OpenEXR-msvc-%tbs_arch%.targets +cd %BUILDTREE% +nuget pack %INITDIR%\OpenEXR-msvc-%tbs_arch%.nuspec +cd %INITDIR% +REM --- exit ---- +GOTO:eof diff --git a/Contrib/NuGet/OpenEXR-msvc-x64.nuspec b/Contrib/NuGet/OpenEXR-msvc-x64.nuspec new file mode 100644 index 0000000000..7592317148 --- /dev/null +++ b/Contrib/NuGet/OpenEXR-msvc-x64.nuspec @@ -0,0 +1,15 @@ + + + + openexr-msvc-x64 + 2.3.0.8788 + administrator + false + Visual Studio 2017 Release OpenEXR as NuGet package. + + + + + + + \ No newline at end of file diff --git a/Contrib/NuGet/OpenEXR-msvc-x64.targets b/Contrib/NuGet/OpenEXR-msvc-x64.targets new file mode 100644 index 0000000000..75540d4f53 --- /dev/null +++ b/Contrib/NuGet/OpenEXR-msvc-x64.targets @@ -0,0 +1,29 @@ + + + + + HAS_OpenEXR;%(PreprocessorDefinitions) + $(MSBuildThisFileDirectory)../..//build/native/include/OpenEXR;%(AdditionalIncludeDirectories) + + + $(MSBuildThisFileDirectory)../..//build/native/include/OpenEXR;%(AdditionalIncludeDirectories) + + + $(MSBuildThisFileDirectory)../..//build/native/lib_release/*.lib;%(AdditionalDependencies) + + + + + HAS_OpenEXR;%(PreprocessorDefinitions) + $(MSBuildThisFileDirectory)../..//build/native/include/OpenEXR;%(AdditionalIncludeDirectories) + + + $(MSBuildThisFileDirectory)../..//build/native/include/OpenEXR;%(AdditionalIncludeDirectories) + + + $(MSBuildThisFileDirectory)../..//build/native/lib_debug/*.lib;%(AdditionalDependencies) + + + + + diff --git a/Contrib/NuGet/OpenEXR-msvc-x86-build.nuget.bat b/Contrib/NuGet/OpenEXR-msvc-x86-build.nuget.bat new file mode 100644 index 0000000000..428bfd128b --- /dev/null +++ b/Contrib/NuGet/OpenEXR-msvc-x86-build.nuget.bat @@ -0,0 +1,146 @@ +REM @echo off + +Echo LIB Windows Build NuGet + +REM # Build Vars # +set _SCRIPT_DRIVE=%~d0 +set _SCRIPT_FOLDER=%~dp0 +set INITDIR=%_SCRIPT_FOLDER% +set SRC=%INITDIR%\..\..\ +set BUILDTREE=%SRC%\build-win\ +SET tbs_arch=x86 +SET vcvar_arg=x86 +SET cmake_platform="Visual Studio 15 2017" + +REM # VC Vars # +SET VCVAR="%programfiles(x86)%\Microsoft Visual Studio\2017\Professional\VC\Auxiliary\Build\vcvarsall.bat" +if exist %VCVAR% call %VCVAR% %vcvar_arg% +SET VCVAR="%programfiles(x86)%\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" +if exist %VCVAR% call %VCVAR% %vcvar_arg% + +REM # Clean Build Tree # +rd /s /q %BUILDTREE% +mkdir %BUILDTREE% +mkdir %BUILDTREE%\deps + +REM # Change to Build Tree drive # +%_SCRIPT_DRIVE% +REM # Change to Build Tree directory # +cd %BUILDTREE% + +:nuget_Dep +REM # packages from nuget # +mkdir %BUILDTREE%\deps +cd %BUILDTREE%\deps +SET VER=1.2.11.8899 +set ZLIBDIR=%BUILDTREE%\deps\zlib-msvc-%tbs_arch%.%VER%\build\native +nuget install zlib-msvc-%tbs_arch% -Version %VER% +SET VER=1.3.4.8788 +set FLTKDIR=%BUILDTREE%\deps\FLTK-msvc-%tbs_arch%.%VER%\build\native +nuget install FLTK-msvc-%tbs_arch% -Version %VER% + +:copy_files +set BINDIR=%SRC%\build-nuget\ +rd /s /q %BINDIR% +mkdir %BINDIR% +mkdir %BINDIR%\lib +set PATH=%BINDIR%\lib;%PATH% +echo %BINDIR% + +:static_LIB +REM # LIB STATIC # +ECHO %cmake_platform% STATIC + +rd /s /q %BUILDTREE%\OpenEXR +mkdir %BUILDTREE%\OpenEXR +cd %BUILDTREE%\OpenEXR +cmake -G %cmake_platform% ^ +-DBUILD_ILMBASE_STATIC:BOOL=ON ^ +-DOPENEXR_BUILD_ILMBASE:BOOL=ON ^ +-DOPENEXR_BUILD_OPENEXR:BOOL=ON ^ +-DOPENEXR_BUILD_PYTHON_LIBS:BOOL=OFF ^ +-DOPENEXR_BUILD_VIEWERS:BOOL=ON ^ +-DOPENEXR_BUILD_TESTS:BOOL=ON ^ +-DOPENEXR_RUN_FUZZ_TESTS:BOOL=OFF ^ +-DOPENEXR_BUILD_UTILS:BOOL=ON ^ +-DOPENEXR_BUILD_SHARED:BOOL=OFF ^ +-DOPENEXR_BUILD_STATIC:BOOL=ON ^ +-DCMAKE_CXX_FLAGS_RELEASE="/MD" ^ +-DCMAKE_CXX_FLAGS_DEBUG="/MDd" ^ +-DCMAKE_C_FLAGS_RELEASE="/MD" ^ +-DCMAKE_C_FLAGS_DEBUG="/MDd" ^ +-DZLIB_LIBRARY=%ZLIBDIR%\lib_release\zlibstatic.lib ^ +-DZLIB_INCLUDE_DIR=%ZLIBDIR%\include ^ +-DFLTK_BASE_LIBRARY_RELEASE=%FLTKDIR%\lib_release\fltk.lib ^ +-DFLTK_GL_LIBRARY_RELEASE=%FLTKDIR%\lib_release\fltk_gl.lib ^ +-DFLTK_FORMS_LIBRARY_RELEASE=%FLTKDIR%\lib_release\fltk_forms.lib ^ +-DFLTK_IMAGES_LIBRARY_RELEASE=%FLTKDIR%\lib_release\fltk_images.lib ^ +-DFLTK_BASE_LIBRARY_DEBUG=%FLTKDIR%\lib_debug\fltkd.lib ^ +-DFLTK_GL_LIBRARY_DEBUG=%FLTKDIR%\lib_debug\fltk_gld.lib ^ +-DFLTK_FORMS_LIBRARY_DEBUG=%FLTKDIR%\lib_debug\fltk_formsd.lib ^ +-DFLTK_IMAGES_LIBRARY_DEBUG=%FLTKDIR%\lib_debug\fltk_imagesd.lib ^ +-DFLTK_INCLUDE_DIR=%FLTKDIR%\include ^ +-DCMAKE_INSTALL_PREFIX=%BINDIR% ^ +-DCMAKE_BUILD_TYPE="Release" %SRC% +cmake --build . --config Release --target install + +move %BINDIR%lib %BINDIR%lib_release +move %BINDIR%bin %BINDIR%bin_release + +REM # DEBUG # +REM # Clean Build Tree # +rd /s /q %BUILDTREE%\OpenEXR +mkdir %BUILDTREE%\OpenEXR +cd %BUILDTREE%\OpenEXR +cmake -G %cmake_platform% ^ +-DBUILD_ILMBASE_STATIC:BOOL=ON ^ +-DOPENEXR_BUILD_ILMBASE:BOOL=ON ^ +-DOPENEXR_BUILD_OPENEXR:BOOL=ON ^ +-DOPENEXR_BUILD_PYTHON_LIBS:BOOL=OFF ^ +-DOPENEXR_BUILD_VIEWERS:BOOL=ON ^ +-DOPENEXR_BUILD_TESTS:BOOL=ON ^ +-DOPENEXR_RUN_FUZZ_TESTS:BOOL=OFF ^ +-DOPENEXR_BUILD_UTILS:BOOL=ON ^ +-DOPENEXR_BUILD_SHARED:BOOL=OFF ^ +-DOPENEXR_BUILD_STATIC:BOOL=ON ^ +-DCMAKE_CXX_FLAGS_RELEASE="/MD" ^ +-DCMAKE_CXX_FLAGS_DEBUG="/MDd" ^ +-DCMAKE_C_FLAGS_RELEASE="/MD" ^ +-DCMAKE_C_FLAGS_DEBUG="/MDd" ^ +-DZLIB_LIBRARY=%ZLIBDIR%\lib_debug\zlibstaticd.lib ^ +-DZLIB_INCLUDE_DIR=%ZLIBDIR%\include ^ +-DFLTK_BASE_LIBRARY_RELEASE=%FLTKDIR%\lib_release\fltk.lib ^ +-DFLTK_GL_LIBRARY_RELEASE=%FLTKDIR%\lib_release\fltk_gl.lib ^ +-DFLTK_FORMS_LIBRARY_RELEASE=%FLTKDIR%\lib_release\fltk_forms.lib ^ +-DFLTK_IMAGES_LIBRARY_RELEASE=%FLTKDIR%\lib_release\fltk_images.lib ^ +-DFLTK_BASE_LIBRARY_DEBUG=%FLTKDIR%\lib_debug\fltkd.lib ^ +-DFLTK_GL_LIBRARY_DEBUG=%FLTKDIR%\lib_debug\fltk_gld.lib ^ +-DFLTK_FORMS_LIBRARY_DEBUG=%FLTKDIR%\lib_debug\fltk_formsd.lib ^ +-DFLTK_IMAGES_LIBRARY_DEBUG=%FLTKDIR%\lib_debug\fltk_imagesd.lib ^ +-DFLTK_INCLUDE_DIR=%FLTKDIR%\include ^ +-DCMAKE_INSTALL_PREFIX=%BINDIR% ^ +-DCMAKE_BUILD_TYPE="DEBUG" %SRC% +cmake --build . --config DEBUG --target install + +move %BINDIR%lib %BINDIR%lib_debug +move %BINDIR%bin %BINDIR%bin_debug + +REM # TODO: ENABLE SHARED Build +GOTO:nuget_req +mkdir %BINDIR%\static\ +move /Y %BINDIR%\lib %BINDIR%\static\ + +:shared_LIB +REM # LIB SHARED # +ECHO %cmake_platform% SHARED + + +:nuget_req +cd %BINDIR% +REM # make nuget packages from binaries # +copy %INITDIR%\OpenEXR-msvc-%tbs_arch%.targets %BINDIR%\OpenEXR-msvc-%tbs_arch%.targets +cd %BUILDTREE% +nuget pack %INITDIR%\OpenEXR-msvc-%tbs_arch%.nuspec +cd %INITDIR% +REM --- exit ---- +GOTO:eof diff --git a/Contrib/NuGet/OpenEXR-msvc-x86.nuspec b/Contrib/NuGet/OpenEXR-msvc-x86.nuspec new file mode 100644 index 0000000000..a2d93b484d --- /dev/null +++ b/Contrib/NuGet/OpenEXR-msvc-x86.nuspec @@ -0,0 +1,15 @@ + + + + openexr-msvc-x86 + 2.3.0.8788 + administrator + false + Visual Studio 2017 Release OpenEXR as NuGet package. + + + + + + + \ No newline at end of file diff --git a/Contrib/NuGet/OpenEXR-msvc-x86.targets b/Contrib/NuGet/OpenEXR-msvc-x86.targets new file mode 100644 index 0000000000..d7a8f93dc8 --- /dev/null +++ b/Contrib/NuGet/OpenEXR-msvc-x86.targets @@ -0,0 +1,29 @@ + + + + + HAS_OpenEXR;%(PreprocessorDefinitions) + $(MSBuildThisFileDirectory)../..//build/native/include/OpenEXR;%(AdditionalIncludeDirectories) + + + $(MSBuildThisFileDirectory)../..//build/native/include/OpenEXR;%(AdditionalIncludeDirectories) + + + $(MSBuildThisFileDirectory)../..//build/native/lib_release/*.lib;%(AdditionalDependencies) + + + + + HAS_OpenEXR;%(PreprocessorDefinitions) + $(MSBuildThisFileDirectory)../..//build/native/include/OpenEXR;%(AdditionalIncludeDirectories) + + + $(MSBuildThisFileDirectory)../..//build/native/include/OpenEXR;%(AdditionalIncludeDirectories) + + + $(MSBuildThisFileDirectory)../..//build/native/lib_debug/*.lib;%(AdditionalDependencies) + + + + + diff --git a/OpenEXR_Viewers/exrdisplay/CMakeLists.txt b/OpenEXR_Viewers/exrdisplay/CMakeLists.txt index 9ce1019fda..4301acd3c7 100644 --- a/OpenEXR_Viewers/exrdisplay/CMakeLists.txt +++ b/OpenEXR_Viewers/exrdisplay/CMakeLists.txt @@ -24,6 +24,10 @@ TARGET_LINK_LIBRARIES ( exrdisplay OpenEXR::IlmImf${OPENEXR_TARGET_SUFFIX} IlmBase::Iex${OPENEXR_TARGET_SUFFIX} IlmBase::Half${OPENEXR_TARGET_SUFFIX} + IlmBase::Imath${OPENEXR_TARGET_SUFFIX} + IlmBase::IlmThread${OPENEXR_TARGET_SUFFIX} + ${PTHREAD_LIB} + ${ZLIB_LIBRARIES} ${FLTK_LIBRARIES} ${OPENGL_LIBRARIES} ) From ef3ca9e2303fe5f74263e9ac4f7a068baf3ed01f Mon Sep 17 00:00:00 2001 From: Cary Phillips Date: Sat, 22 Sep 2018 16:37:41 -0700 Subject: [PATCH 03/17] Removed OpenEXRViewers.pc.in and PyIlmBase.pc.in. Since these modules are binaries, not libraries, there is no need to support pkgconfig for them. --- OpenEXR_Viewers/OpenEXR_Viewers.pc.in | 11 ----------- PyIlmBase/PyIlmBase.pc.in | 11 ----------- 2 files changed, 22 deletions(-) delete mode 100644 OpenEXR_Viewers/OpenEXR_Viewers.pc.in delete mode 100644 PyIlmBase/PyIlmBase.pc.in diff --git a/OpenEXR_Viewers/OpenEXR_Viewers.pc.in b/OpenEXR_Viewers/OpenEXR_Viewers.pc.in deleted file mode 100644 index a9d7f93736..0000000000 --- a/OpenEXR_Viewers/OpenEXR_Viewers.pc.in +++ /dev/null @@ -1,11 +0,0 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ -OpenEXR_includedir=@includedir@/OpenEXR - -Name: OpenEXR_Viewers -Description: OpenEXR Viewers -Version: @OPENEXR_VIEWERS_VERSION@ -Libs: -L${libdir} @OPENEXR_CTL_LDFLAGS@ @OPENEXR_CTL_LIBS@ -Cflags: @OPENEXR_CTL_CXXFLAGS@ diff --git a/PyIlmBase/PyIlmBase.pc.in b/PyIlmBase/PyIlmBase.pc.in deleted file mode 100644 index 63a77deb9d..0000000000 --- a/PyIlmBase/PyIlmBase.pc.in +++ /dev/null @@ -1,11 +0,0 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ -PyIlmBase_includedir=@includedir@/OpenEXR - -Name: PyIlmBase -Description: Python bindings for the IlmBase libraries -Version: @PYILMBASE_VERSION@ -Libs: -L${libdir} @ILMBASE_LDFLAGS@ -lIlmImf -lz @ILMBASE_LIBS@ -Cflags: @ILMBASE_CXXFLAGS@ -I${PyIlmBase_includedir} From 027a323e375ebe46a6a74863c3c6306dda4427aa Mon Sep 17 00:00:00 2001 From: Cary Phillips Date: Sat, 22 Sep 2018 17:12:23 -0700 Subject: [PATCH 04/17] Update the README files with instructions for building on Windows, specifically calling out the proper Visual Studio version. --- IlmBase/README.md | 6 +++++- OpenEXR/README.md | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/IlmBase/README.md b/IlmBase/README.md index 54ff55ad4f..a803c396ef 100644 --- a/IlmBase/README.md +++ b/IlmBase/README.md @@ -75,9 +75,13 @@ To generate Visual Studio solution files and build the libraries: setlocal del /f CMakeCache.txt cmake -DCMAKE_INSTALL_PREFIX= - -G "Visual Studio 10 Win64" + -G "Visual Studio 15 2017 Win64" ..\ilmbase + Note: The "15 2017" indicates the specific Visual Studio version; + if compiling for a different version, replace this with the proper + target version string. + 2. Navigate to ``IlmBase`` folder in Windows Explorer, open ``ILMBase.sln`` and build the solution. When it builds successfully, right click ``INSTALL project`` and build. It will install the output to the path diff --git a/OpenEXR/README.md b/OpenEXR/README.md index 4b69baf085..b7969a2d88 100644 --- a/OpenEXR/README.md +++ b/OpenEXR/README.md @@ -83,6 +83,9 @@ CMakeLists.txt file to build all the libraries at once. #### Building on Windows using **cmake** +See the ``README`` file in the IlmBase library for a guide to building +on Windows. + #### Building on **macOS** **macOS** supports multiple architectures. By default, IlmBase will be From eb2392c88152c05c3b554cc14bc8a1fafb344340 Mon Sep 17 00:00:00 2001 From: Cary Phillips Date: Sat, 22 Sep 2018 17:25:19 -0700 Subject: [PATCH 05/17] add build-win/, build-nuget/, and *~ to .gitignore. --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 067bab7ab8..a9c8e94770 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,6 @@ missing .DS_Store *.project *.cproject +build-win/ +build-nuget/ +*~ From 737bc29fbbd1d46f596f32d186dfb904f48f4c52 Mon Sep 17 00:00:00 2001 From: Nick Porcino Date: Fri, 29 Mar 2019 22:27:58 -0700 Subject: [PATCH 06/17] Remove unused cmake variable --- OpenEXR/IlmImf/CMakeLists.txt | 8 -------- 1 file changed, 8 deletions(-) diff --git a/OpenEXR/IlmImf/CMakeLists.txt b/OpenEXR/IlmImf/CMakeLists.txt index e1a8740570..d31cf68c8f 100644 --- a/OpenEXR/IlmImf/CMakeLists.txt +++ b/OpenEXR/IlmImf/CMakeLists.txt @@ -2,14 +2,6 @@ SET(CMAKE_INCLUDE_CURRENT_DIR 1) -IF (WIN32) - SET(RUNTIME_DIR ${OPENEXR_PACKAGE_PREFIX}/bin) - SET(WORKING_DIR ${RUNTIME_DIR}) -ELSE () - SET(RUNTIME_DIR ${OPENEXR_PACKAGE_PREFIX}/lib) - SET(WORKING_DIR .) -ENDIF () - SET(BUILD_B44EXPLOGTABLE OFF) IF (NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/b44ExpLogTable.h") SET(BUILD_B44EXPLOGTABLE ON) From e310da649fa30f699699207e4a9129776865c6da Mon Sep 17 00:00:00 2001 From: Cary Phillips Date: Sun, 5 May 2019 12:50:03 -0700 Subject: [PATCH 07/17] Meeting notes 2019-5-2 --- aswf-tsc/meetings/2019-05-02.md | 59 +++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 aswf-tsc/meetings/2019-05-02.md diff --git a/aswf-tsc/meetings/2019-05-02.md b/aswf-tsc/meetings/2019-05-02.md new file mode 100644 index 0000000000..fd8ce7d53c --- /dev/null +++ b/aswf-tsc/meetings/2019-05-02.md @@ -0,0 +1,59 @@ +5/2/2019 +======== + +Attending: +* John Mertic +* Cary Phillips +* Rod Bogart +* Peter Hillman +* Larry Gritz +* Daniel Heckenberg + +Personal introductions: +----------------------- + +* John Mertic: Linux Foundation - Director of Program Management. Help getting project up and going, helping with issues and concerns. +* Peter Hillman: Weta, worked on OpenEXR deep stuff. +* Cary Phillips: ILM R&D Supervisor, miscellaneous contributions to IlmBase. +* Larry Gritz: Sony Pictures Imageworks, experience as a user of OpenEXR, lead for OpenImageIO (the major client of OpenEXR, sits between the library and most users). +* Rod Bogart: One of the originators with Florian Kainz and Drew Hess. Involvement has been on and off, mostly off lately. Vice chair of the Academy’s ACES project. +* Daniel Heckenberg: ASWF TAC chair. + +Discussion: +----------- + +* John: We are the Technical Steering Committee: +- Set direction, features, roadmap. +- Issues, questions, +- Serves the community, not necessarily an overlord. +- Has the help of the TAC + +* Need to set up a TSC subdirectory in the github repo, to hold meeting notes, etc. + +* There are three github repos: +- Openexr +- Openexr-website +- Openexr-images (big test images, nice to not pollute the main repo with them) + +* Other contributors: +- Kimball Thurston - Weta +- Nick Rasmussen - ILM +- Nick Porcino - Occulus, formerly ILM +- Jonathan Stone - Lucasfilm/MaterialX + +* ASWF member organization have obligation to contribute to projects. + +* Larry: OCIO has a separate role for TSC chair. We can be creative with how we divide the roles. Few things come to formal votes. + +* Cary elected TSC chair + +* Action items: +- Set up aswf.io mailing lists; send message asking recipients to sign up over there; this lets us know who the community is. +- Set up private TSC alias. +- Move github repo to ASWF (contents will be unchanged, address will not change) +- John: contact Steve Winslow about code scanning, make sure license compliance in order. +- Cary: Add permissions to github repos + + + + From 4680c42c467460f563d8cbeddc77711f47c527cd Mon Sep 17 00:00:00 2001 From: Cary Phillips Date: Sun, 5 May 2019 12:57:59 -0700 Subject: [PATCH 08/17] formatting --- aswf-tsc/meetings/2019-05-02.md | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/aswf-tsc/meetings/2019-05-02.md b/aswf-tsc/meetings/2019-05-02.md index fd8ce7d53c..c5eb86781c 100644 --- a/aswf-tsc/meetings/2019-05-02.md +++ b/aswf-tsc/meetings/2019-05-02.md @@ -23,23 +23,24 @@ Discussion: ----------- * John: We are the Technical Steering Committee: -- Set direction, features, roadmap. -- Issues, questions, -- Serves the community, not necessarily an overlord. -- Has the help of the TAC + + * Set direction, features, roadmap. + * Issues, questions, + * Serves the community, not necessarily an overlord. + * Has the help of the TAC * Need to set up a TSC subdirectory in the github repo, to hold meeting notes, etc. * There are three github repos: -- Openexr -- Openexr-website -- Openexr-images (big test images, nice to not pollute the main repo with them) + - Openexr + - Openexr-website + - Openexr-images (big test images, nice to not pollute the main repo with them) * Other contributors: -- Kimball Thurston - Weta -- Nick Rasmussen - ILM -- Nick Porcino - Occulus, formerly ILM -- Jonathan Stone - Lucasfilm/MaterialX + - Kimball Thurston - Weta + - Nick Rasmussen - ILM + - Nick Porcino - Occulus, formerly ILM + - Jonathan Stone - Lucasfilm/MaterialX * ASWF member organization have obligation to contribute to projects. @@ -48,11 +49,11 @@ Discussion: * Cary elected TSC chair * Action items: -- Set up aswf.io mailing lists; send message asking recipients to sign up over there; this lets us know who the community is. -- Set up private TSC alias. -- Move github repo to ASWF (contents will be unchanged, address will not change) -- John: contact Steve Winslow about code scanning, make sure license compliance in order. -- Cary: Add permissions to github repos + - Set up aswf.io mailing lists; send message asking recipients to sign up over there; this lets us know who the community is. + - Set up private TSC alias. + - Move github repo to ASWF (contents will be unchanged, address will not change) + - John: contact Steve Winslow about code scanning, make sure license compliance in order. + - Cary: Add permissions to github repos From 510286884195ea7361c92c8dd3a96de65919d1f6 Mon Sep 17 00:00:00 2001 From: Cary Phillips Date: Wed, 8 May 2019 12:31:53 -0700 Subject: [PATCH 09/17] OpenEXR-Adoption-Proposal.md --- .../proposal/OpenEXR-Adoption-Proposal.md | 141 ++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 aswf-tsc/proposal/OpenEXR-Adoption-Proposal.md diff --git a/aswf-tsc/proposal/OpenEXR-Adoption-Proposal.md b/aswf-tsc/proposal/OpenEXR-Adoption-Proposal.md new file mode 100644 index 0000000000..3cf5caa1a3 --- /dev/null +++ b/aswf-tsc/proposal/OpenEXR-Adoption-Proposal.md @@ -0,0 +1,141 @@ +# OpenEXR Adoption Proposal + + +## ASWF TAC Meeting - April 10th, 2019 + + +# Overview + + + +1. Project Contribution Proposal +2. Incubation Stage Requirements +3. Adopted Stage Requirements +4. Additional Discussion Topics + 1. Near-Term Development Roadmap + 2. Community Discussion at SIGGRAPH 2018 + 3. Technical Steering Committee + + +# Project Contribution Proposal + +The following is an overview of the Project Contribution Proposal for OpenEXR: + + + +* Name of the project: + * OpenEXR +* Requested project maturity level: + * Incubation (initially proposed as Adopted) +* Project description: + * OpenEXR is a high dynamic-range image file format developed by Industrial Light & Magic (ILM) for use in computer imaging applications. OpenEXR was created by ILM in 1999 and released to the public in 2003 as an open-source library. +* Please explain how this project is aligned with the mission of ASWF? + * OpenEXR is one of the foundational technologies in computer imaging, and it remains a standard HDR image format in computer graphics for linear and interactive media. OpenEXR was honored with an Academy Award for Technical Achievement in 2007. +* What is the project’s license for code contributions? + * OpenEXR is shared under a modified BSD license (http://www.openexr.com/license.html), and its license agreements for individual and corporate code contributions may be found at [http://www.openexr.com/documentation.html](http://www.openexr.com/documentation.html). +* What tool or platform is utilized for source control, and what is the location? + * OpenEXR uses GitHub for source control, and its repository is currently located at [https://github.com/openexr/openexr](https://github.com/openexr/openexr). +* What are the external dependencies of the project, and what are the licenses of those dependencies? + * The mandatory dependency of OpenEXR and its license is: + * Zlib ([http://zlib.net/zlib_license.html](http://zlib.net/zlib_license.html)) + * The optional dependencies of OpenEXR and their licenses are: + * Boost ([https://www.boost.org/users/license.html](https://www.boost.org/users/license.html)) + * NumPy ([http://www.numpy.org/license.html](http://www.numpy.org/license.html)) + * Fltk ([https://www.fltk.org/COPYING.php](https://www.fltk.org/COPYING.php)) + * Cg ([http://developer.download.nvidia.com/cg/Cg_2.2/license.pdf](http://developer.download.nvidia.com/cg/Cg_2.2/license.pdf)) +* What roles does the project have (e.g. maintainers, committers?) Who are the current core committers of the project, or where can a list of committers be found? + * Recent contributors to the OpenEXR project include Cary Phillips, Nick Rasmussen, Kimball Thurston and Nick Porcino, and a complete list of current maintainers can be found at [https://github.com/orgs/openexr/people](https://github.com/orgs/openexr/people). +* What mailing lists are currently used by the project? + * OpenEXR has three mailing lists: openexr-announce, openexr-user, and openexr-devel. + * [https://lists.nongnu.org/mailman/listinfo/openexr-announce](https://lists.nongnu.org/mailman/listinfo/openexr-announce) + * [https://lists.nongnu.org/mailman/listinfo/openexr-user](https://lists.nongnu.org/mailman/listinfo/openexr-user) + * [https://lists.nongnu.org/mailman/listinfo/openexr-devel](https://lists.nongnu.org/mailman/listinfo/openexr-devel) +* What tool or platform is leveraged by the project for issue tracking? + * Issue tracking for OpenEXR is handled through its GitHub repository: + + [https://github.com/openexr/openexr](https://github.com/openexr/openexr) + +* Does the project have a Core Infrastructure Initiative security best practices badge? Do you foresee any challenges obtaining one? + * OpenEXR does not yet have a CII badge, but it should be straightforward for it to meet the criteria of this program in the future. +* What is the project’s website? Is there a wiki? + * The website for OpenEXR is [http://www.openexr.com](http://www.openexr.com), and there is no official wiki. +* What social media accounts are used by the project? + * OpenEXR does not have any official social media accounts. +* What is the project’s release methodology and cadence? + * New releases of OpenEXR are organized on an as-needed basis, and do not currently follow a regular cadence. +* Are any trademarks, registered or unregistered, leveraged by the project? Have any trademark registrations been filed by the project or any third party anywhere in the world? + * OpenEXR is an unregistered trademark of Lucasfilm Ltd. + + +# Incubation Stage Requirements + +The following are the entry requirements for an Incubation stage project of the ASWF, which we believe are currently met by the OpenEXR project: + + + +* Submit a completed Project Contribution Proposal Template to the TAC, or the TAC’s designated recipient for contribution proposals. +* Provide such additional information as the TAC may reasonably request. +* Be available to present to the TAC with respect to the project’s proposal and inclusion in ASWF. Project teams should be prepared to present a detailed (20-30 minutes in length) overview on the project in addition to speaking to the information contained in the project contribution proposal. +* Be deemed by the TAC to add value to the mission of ASWF. +* Have a technical charter that provides for inbound and outbound licensing of code under an OSI-approved license approved by the Governing Board of ASWF for projects. The ASWF maintains a template for projects to use. +* Agree to transfer any relevant trademarks to an LF entity to hold for the project. In the case of projects with established trademarks where a trademark transfer is commercially difficult, we generally recommend the project use a new name upon incubation. + + +# Adopted Stage Requirements + +The following are the entry requirements for an Adopted stage project of the ASWF, along with the status of OpenEXR with respect to these goals: + + + +* Demonstrate having a healthy number of committers from a diverse contributor base. A committer is defined in the technical charter but is often used to describe the core contributors who can accept contributions to the project, or a portion thereof. + * The OpenEXR project on GitHub currently has 39 contributors, including significant contributions from Lucasfilm, DreamWorks Animation, and Weta Digital, and we expect the number of contributing individuals and companies to increase under the ASWF. +* Have achieved and maintained a Core Infrastructure Initiative Best Practices Badge. + * Not yet +* Demonstrate a substantial ongoing flow of commits and merged contributions. + * The OpenEXR project on GitHub has 1,279 commits over its lifetime, and we expect the rate of new commits to increase once the project is under the ASWF. +* Document current project owners and current and emeritus committers in a COMMITTER file or similarly visible system. A copy of the project’s charter (or other authorized governance document) will be included or linked to in visible location. + * Not yet +* Have a technical lead appointed for representation of the project to the TAC. + * Not yet +* Have a completed and presented to the TAC an initial license scan of the project’s codebase. + * Not yet + + +# Additional Discussion Topics + + +## Near-Term Development Roadmap + + + +* Robust builds, installation, and tests on all platforms, using the CMake build infrastructure. Builds should be warning-free on all modern compilers. +* Automated building and testing of new pull requests using one or more CI solutions (e.g. CircleCI, Azure Pipelines, Travis, Appveyor, Jenkins). +* Evaluating and merging existing pull requests from the community (23 open pull requests). +* Evaluating and addressing existing issues from the community (122 open issues). +* Establishing guidance for reporting new security issues (e.g. a private channel). +* Discuss moving IlmBase into its own Git submodule. +* Discuss creating a lightweight, shared library for vector/matrix functionality. + + +## Community Discussion at SIGGRAPH 2018 + +The following additional ideas were suggested by the OpenEXR community at the Birds of a Feather event at SIGGRAPH 2018: + + + +* Simple and fast write path (along the lines of TinyEXR) +* Integer image support (reducing the need for TIFF) +* Standalone LibHalf library (and reconciliation with CUDA half type) +* GPU decompression for performance (potentially supporting only a subset of formats) +* Metadata standardization + + +## Technical Steering Committee + +The initial members of the Technical Steering Committee for OpenEXR will be Larry Gritz (SPI), Rod Bogart (Epic), Peter Hillman (Weta), and Jonathan Stone (Lucasfilm). + +In addition, we believe it would be valuable to nominate a small set of core committers, including recent contributors to OpenEXR, who would have push access to the new repository. + + + + From 77ea9fbec9322e062f0c896835e208e467de5d22 Mon Sep 17 00:00:00 2001 From: Cary Phillips Date: Wed, 8 May 2019 15:40:47 -0700 Subject: [PATCH 10/17] OpenEXR-Technical-Charter.md --- .../proposal/OpenEXR-Technical-Charter.md | 272 ++++++++++++++++++ 1 file changed, 272 insertions(+) create mode 100644 aswf-tsc/proposal/OpenEXR-Technical-Charter.md diff --git a/aswf-tsc/proposal/OpenEXR-Technical-Charter.md b/aswf-tsc/proposal/OpenEXR-Technical-Charter.md new file mode 100644 index 0000000000..ceea896ebb --- /dev/null +++ b/aswf-tsc/proposal/OpenEXR-Technical-Charter.md @@ -0,0 +1,272 @@ + +# Technical Charter (the “Charter”) for OpenEXR a Series of LF Projects, LLC + +### Adopted May 1, 2019 + +This charter (the “Charter”) sets forth the responsibilities and +procedures for technical contribution to, and oversight of, the +**OpenEXR Project**, which has been established as **OpenEXR a Series +of LF Projects, LLC** (the “Project”). LF Projects, LLC (“LF Projects”) +is a Delaware series limited liability company. All Contributors to +the Project must comply with the terms of this Charter. + +1. Mission and Scope of the Project + + a. The mission of the Project is to continue maintenance and + development of an open source project with the goals indicated in + the “README” file within the Project’s code repository. + + b. The scope of the Project includes using existing OpenEXR + repositories to seed the Project, and software development under + an OSI-approved open source license supporting the mission, + including documentation, testing, integration and the creation of + other artifacts that aid the development, deployment, operation or + adoption of the open source software project. + +2. Technical Steering Committee + + a. The Technical Steering Committee (the “TSC”) will be responsible + for all technical oversight of the open source Project. + + b. The TSC voting members shall be as set forth within the + “CONTRIBUTING” file within the Project’s code repository. A voting + member of the TSC may nominate a successor in the event that such + voting member decides to leave the TSC, and the TSC, including the + departing member, shall confirm or reject such nomination by a + vote. In the event that the departing member’s nomination for + successor is rejected by vote of the TSC, the departing member shall + be entitled to continue nominating successors until one such + successor is confirmed by vote of the TSC. If the departing member + fails or is unable to nominate a successor, the TSC may nominate one + on the departing member’s behalf. The TSC may also determine if and + how additional voting members of the TSC are chosen, and any such + approach will be documented in the CONTRIBUTING file, provided that + such approach does not conflict with this Charter. Any meetings of + the TSC are intended to be open to the public, except where there is + a reasonable need for privacy, and can be conducted electronically, + via teleconference, or in person. + + c. TSC projects generally will involve Contributors and + Committers. The TSC may adopt or modify roles so long as the roles + are documented in the CONTRIBUTING file. Unless otherwise + documented: + + i. Contributors include anyone in the technical community that + contributes code, documentation, or other technical artifacts to the + Project; + + ii. Committers are Contributors who have earned the ability to + modify (“commit”) source code, documentation or other technical + artifacts in a project’s repository; and + + iii. A Contributor may become a Committer by a majority approval of + the existing Committers or at the discretion of the TSC. A Committer + may be removed by a majority approval of the other existing + Committers, or at the discretion of the TSC. + + d. Participation in the Project through becoming a Contributor and + Committer is open to anyone so long as they abide by the terms of + this Charter. + + e. The TSC may (1) establish workflow procedures for the submission, + approval, and closure/archiving of projects, (2) set requirements for + the promotion of Contributors to Committer status, as applicable, and + (3) amend, adjust, refine and/or eliminate the roles of Contributors, + and Committers, and create new roles, and publicly document any TSC + roles, as it sees fit. + + f. The TSC may elect a TSC Chair, who will preside over meetings of + the TSC and will serve until his or her resignation or replacement by + the TSC. The TSC Chair, or any other TSC member so designated by the + TSC, will serve as the primary communication contact between the + Project and the Academy Software Foundation Fund of The Linux + Foundation. + + g. Responsibilities: The TSC will be responsible for all aspects of + oversight relating to the Project, which may include: + + i. coordinating the technical direction of the Project; + + ii. approving project or system proposals (including, but not + limited to, incubation, deprecation, and changes to a sub-project’s + scope); + + iii. organizing sub-projects and removing projects; + + iv. creating sub-committees or working groups to focus on + cross-project technical issues and requirements; + + v. appointing representatives to work with other open source or open + standards communities; + + vi. establishing community norms, workflows, issuing releases, and + security issue reporting policies; + + vii. approving and implementing policies and processes for + contributing (to be published in the CONTRIBUTING file) and + coordinating with the Series Manager to resolve matters or concerns + that may arise as set forth in Section 7 of this Charter; + + viii. discussions, seeking consensus, and where necessary, voting on + technical matters relating to the code base that affect multiple + projects; and + + ix. coordinating any marketing, events, or communications regarding + the Project with the LF Projects Manager or their designee. + +3. TSC Voting + + a. While the Project aims to operate as a consensus based community, + if any TSC decision requires a vote to move the Project forward, the + voting members of the TSC will vote on a one vote per voting member + basis. + + b. At least fifty percent of all voting members of the TSC must be + present at a TSC meeting in order to establish a quorum. The TSC may + continue to meet if a quorum is not met, but will be prevented from + making any decisions at such meeting. + + c. Except as provided in Section 7.c. and 8.a, decisions by vote at a + meeting require a majority vote of those in attendance, provided + quorum is met. Decisions made by electronic vote without a meeting + require a majority vote of all voting members of the TSC. + + d. In the event a vote cannot be resolved by the TSC, any voting + member of the TSC may refer the matter to the Series Manager or its + designee for assistance in reaching a resolution. + +4. Compliance with Policies + + a. This Charter is subject to the Series Agreement for the Project + and the Operating Agreement of LF Projects. Contributors will comply + with the policies of LF Projects as may be adopted and amended by LF + Projects, including, without limitation the policies listed at + https://lfprojects.org/policies/. + + b. The TSC may adopt a code of conduct (“CoC”) for the Project, which + is subject to approval by the Series Manager. Contributors to the + Project will comply with the CoC or, in the event that a + Project-specific CoC has not been approved, the LF Projects Code of + Conduct listed at https://lfprojects.org/policies/. + + c. When amending or adopting any policy applicable to the Project, LF + Projects will publish such policy, as to be amended or adopted, on + its web site at least 30 days prior to such policy taking effect; + provided, however, that in the case of any amendment of the Trademark + Policy or Terms of Use of LF Projects, any such amendment is + effective upon publication on LF Project’s web site. + + c. All participants must allow open participation from any individual + or organization meeting the requirements for contributing under this + Charter and any policies adopted for all participants by the TSC, + regardless of competitive interests. Put another way, the Project + community must not seek to exclude any participant based on any + criteria, requirement, or reason other than those that are reasonable + and applied on a non-discriminatory basis to all participants in the + Project community. + + e. The Project will operate in a transparent, open, collaborative, + and ethical manner at all times. The output of all Project + discussions, proposals, timelines, decisions, and status should be + made open and easily visible to all. Any potential violations of this + requirement should be reported immediately to the LF Projects + Manager. + +5. Community Assets + + a. LF Projects will hold title to all trade or service marks used by + the Project (“Project Trademarks”), whether based on common law or + registered rights. Project Trademarks will be transferred and + assigned to LF Projects to hold on behalf of the Project. Any use of + any Project Trademarks by participants in the Project will be in + accordance with the license from LF Projects and inure to the benefit + of LF Projects. + + b. The Project shall, as permitted and in accordance with such + license from LF Projects, develop and own all Project GitHub and + social media accounts, and domain name registrations created by the + Project community. + + c. Under no circumstances will LF Projects be expected or required to + undertake any action on behalf of the Project that is inconsistent + with the tax-exempt status or purpose, as applicable, of LFP, Inc. or + LF Projects, LLC. + +6. General Rules and Operations. + + a. The Project will: + + i. engage in the work of the project in a professional manner + consistent with maintaining a cohesive community, while also + maintaining the goodwill and esteem of LF Projects, LFP, Inc. and + other partner organizations in the open source software community; + and + + ii. respect the rights of all trademark owners, including any + branding and trademark usage guidelines. + +7. Intellectual Property Policy + + a. Participants acknowledge that the copyright in all new + contributions shall be retained by the copyright holder as + independent works of authorship and that no contributor or copyright + holder will be required to assign copyrights to the Project. + + b. Except as described in Section 7.c., all code contributions to the + Project are subject to the following: + + i. All new inbound code contributions to the Project must be made + using an OSI-approved open source license specified for the Project + within the “LICENSE” file within the Project’s code repository (the + “Project License”). + + ii. All new inbound code contributions must: + + 1. Be made pursuant to a binding Project Contribution License + Agreement (the “CLA”) available on the Project’s web site; and + + 2. be accompanied by a Developer Certificate of Origin + ([http://developercertificate.org](http://developercertificate.org)) + sign-off in the source code system that is submitted through a + TSC-approved contribution process which will bind the authorized + contributor and, if not self-employed, their employer to the + applicable license; + + iii. All outbound code will be made available under the Project License. + + iv. Documentation will be received and made available by the Project + under the Creative Commons Attribution 4.0 International License + (available at + [http://creativecommons.org/licenses/by/4.0/](http://creativecommons.org/licenses/by/4.0/)). + + v. The Project may seek to integrate and contribute back to other + open source projects (“Upstream Projects”). In such cases, the + Project will conform to all license requirements of the Upstream + Projects, including dependencies, leveraged by the Project. Upstream + Project code contributions not stored within the Project’s main code + repository shall comply with the contribution process and license + terms for the applicable Upstream Project. + + c. If an alternative inbound or outbound license is required for + compliance with the license for a leveraged open source project or is + otherwise required to achieve the Project’s mission, the Governing + Board of the Academy Software Foundation Fund of the Linux Foundation + (“Governing Board”), or the Governing Board’s representatives + designated for such purpose, may approve the use of an alternative + license for specific inbound or outbound contributions on an + exception basis. Any exceptions must be approved by a vote of the + Governing Board and must be limited in scope to what is required for + such a purpose. To request an exception, please describe the + contribution, the alternative open source license(s), and the + justification for using an alternative open source license for the + Project. + + d. Contributed files should contain license information, such as SPDX + short form identifiers, indicating the open source license or + licenses pertaining to the file. + +8. Amendments + + a. This charter may be amended by a two-thirds vote of the entire + TSC, subject to reasonable approval by LF Projects. + From 71eea24419c95c0e862d07386760a74aa34727ed Mon Sep 17 00:00:00 2001 From: Cary Phillips Date: Wed, 8 May 2019 15:44:09 -0700 Subject: [PATCH 11/17] moved charter to charter subfolder. --- aswf-tsc/{proposal => charter}/OpenEXR-Technical-Charter.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename aswf-tsc/{proposal => charter}/OpenEXR-Technical-Charter.md (100%) diff --git a/aswf-tsc/proposal/OpenEXR-Technical-Charter.md b/aswf-tsc/charter/OpenEXR-Technical-Charter.md similarity index 100% rename from aswf-tsc/proposal/OpenEXR-Technical-Charter.md rename to aswf-tsc/charter/OpenEXR-Technical-Charter.md From 0be3e8c3b4a89e22f61a8e03e2dedf223d4ef79d Mon Sep 17 00:00:00 2001 From: John Mertic Date: Wed, 8 May 2019 23:05:54 -0400 Subject: [PATCH 12/17] Fixed formatting Signed-off-by: John Mertic --- aswf-tsc/charter/OpenEXR-Technical-Charter.md | 96 +++++++++---------- 1 file changed, 48 insertions(+), 48 deletions(-) diff --git a/aswf-tsc/charter/OpenEXR-Technical-Charter.md b/aswf-tsc/charter/OpenEXR-Technical-Charter.md index ceea896ebb..07652d2468 100644 --- a/aswf-tsc/charter/OpenEXR-Technical-Charter.md +++ b/aswf-tsc/charter/OpenEXR-Technical-Charter.md @@ -12,11 +12,11 @@ the Project must comply with the terms of this Charter. 1. Mission and Scope of the Project - a. The mission of the Project is to continue maintenance and +* **a.** The mission of the Project is to continue maintenance and development of an open source project with the goals indicated in the “README” file within the Project’s code repository. - b. The scope of the Project includes using existing OpenEXR +* **b.** The scope of the Project includes using existing OpenEXR repositories to seed the Project, and software development under an OSI-approved open source license supporting the mission, including documentation, testing, integration and the creation of @@ -25,10 +25,10 @@ the Project must comply with the terms of this Charter. 2. Technical Steering Committee - a. The Technical Steering Committee (the “TSC”) will be responsible +* **a.** The Technical Steering Committee (the “TSC”) will be responsible for all technical oversight of the open source Project. - b. The TSC voting members shall be as set forth within the +* **b.** The TSC voting members shall be as set forth within the “CONTRIBUTING” file within the Project’s code repository. A voting member of the TSC may nominate a successor in the event that such voting member decides to leave the TSC, and the TSC, including the @@ -46,117 +46,117 @@ the Project must comply with the terms of this Charter. a reasonable need for privacy, and can be conducted electronically, via teleconference, or in person. - c. TSC projects generally will involve Contributors and +* **c.** TSC projects generally will involve Contributors and Committers. The TSC may adopt or modify roles so long as the roles are documented in the CONTRIBUTING file. Unless otherwise documented: - i. Contributors include anyone in the technical community that + * **i.** Contributors include anyone in the technical community that contributes code, documentation, or other technical artifacts to the Project; - ii. Committers are Contributors who have earned the ability to + * **ii.** Committers are Contributors who have earned the ability to modify (“commit”) source code, documentation or other technical artifacts in a project’s repository; and - iii. A Contributor may become a Committer by a majority approval of + * **iii.** A Contributor may become a Committer by a majority approval of the existing Committers or at the discretion of the TSC. A Committer may be removed by a majority approval of the other existing Committers, or at the discretion of the TSC. - d. Participation in the Project through becoming a Contributor and +* **d.** Participation in the Project through becoming a Contributor and Committer is open to anyone so long as they abide by the terms of this Charter. - e. The TSC may (1) establish workflow procedures for the submission, +* **e.** The TSC may (1) establish workflow procedures for the submission, approval, and closure/archiving of projects, (2) set requirements for the promotion of Contributors to Committer status, as applicable, and (3) amend, adjust, refine and/or eliminate the roles of Contributors, and Committers, and create new roles, and publicly document any TSC roles, as it sees fit. - f. The TSC may elect a TSC Chair, who will preside over meetings of +* **f.** The TSC may elect a TSC Chair, who will preside over meetings of the TSC and will serve until his or her resignation or replacement by the TSC. The TSC Chair, or any other TSC member so designated by the TSC, will serve as the primary communication contact between the Project and the Academy Software Foundation Fund of The Linux Foundation. - g. Responsibilities: The TSC will be responsible for all aspects of +* **g.** Responsibilities: The TSC will be responsible for all aspects of oversight relating to the Project, which may include: - i. coordinating the technical direction of the Project; + * **i.** coordinating the technical direction of the Project; - ii. approving project or system proposals (including, but not + * **ii.** approving project or system proposals (including, but not limited to, incubation, deprecation, and changes to a sub-project’s scope); - iii. organizing sub-projects and removing projects; + * **iii.** organizing sub-projects and removing projects; - iv. creating sub-committees or working groups to focus on + * **iv.** creating sub-committees or working groups to focus on cross-project technical issues and requirements; - v. appointing representatives to work with other open source or open + * **v.** appointing representatives to work with other open source or open standards communities; - vi. establishing community norms, workflows, issuing releases, and + * **vi.** establishing community norms, workflows, issuing releases, and security issue reporting policies; - vii. approving and implementing policies and processes for + * **vii.** approving and implementing policies and processes for contributing (to be published in the CONTRIBUTING file) and coordinating with the Series Manager to resolve matters or concerns that may arise as set forth in Section 7 of this Charter; - viii. discussions, seeking consensus, and where necessary, voting on + * **viii.** discussions, seeking consensus, and where necessary, voting on technical matters relating to the code base that affect multiple projects; and - ix. coordinating any marketing, events, or communications regarding + * **ix.** coordinating any marketing, events, or communications regarding the Project with the LF Projects Manager or their designee. 3. TSC Voting - a. While the Project aims to operate as a consensus based community, +* **a.** While the Project aims to operate as a consensus based community, if any TSC decision requires a vote to move the Project forward, the voting members of the TSC will vote on a one vote per voting member basis. - b. At least fifty percent of all voting members of the TSC must be +* **b.** At least fifty percent of all voting members of the TSC must be present at a TSC meeting in order to establish a quorum. The TSC may continue to meet if a quorum is not met, but will be prevented from making any decisions at such meeting. - c. Except as provided in Section 7.c. and 8.a, decisions by vote at a +* **c.** Except as provided in Section 7.c. and 8.a, decisions by vote at a meeting require a majority vote of those in attendance, provided quorum is met. Decisions made by electronic vote without a meeting require a majority vote of all voting members of the TSC. - d. In the event a vote cannot be resolved by the TSC, any voting +* **d.** In the event a vote cannot be resolved by the TSC, any voting member of the TSC may refer the matter to the Series Manager or its designee for assistance in reaching a resolution. 4. Compliance with Policies - a. This Charter is subject to the Series Agreement for the Project +* **a.** This Charter is subject to the Series Agreement for the Project and the Operating Agreement of LF Projects. Contributors will comply with the policies of LF Projects as may be adopted and amended by LF Projects, including, without limitation the policies listed at https://lfprojects.org/policies/. - b. The TSC may adopt a code of conduct (“CoC”) for the Project, which +* **b.** The TSC may adopt a code of conduct (“CoC”) for the Project, which is subject to approval by the Series Manager. Contributors to the Project will comply with the CoC or, in the event that a Project-specific CoC has not been approved, the LF Projects Code of Conduct listed at https://lfprojects.org/policies/. - c. When amending or adopting any policy applicable to the Project, LF +* **c.** When amending or adopting any policy applicable to the Project, LF Projects will publish such policy, as to be amended or adopted, on its web site at least 30 days prior to such policy taking effect; provided, however, that in the case of any amendment of the Trademark Policy or Terms of Use of LF Projects, any such amendment is effective upon publication on LF Project’s web site. - c. All participants must allow open participation from any individual +* **d.** All participants must allow open participation from any individual or organization meeting the requirements for contributing under this Charter and any policies adopted for all participants by the TSC, regardless of competitive interests. Put another way, the Project @@ -165,7 +165,7 @@ the Project must comply with the terms of this Charter. and applied on a non-discriminatory basis to all participants in the Project community. - e. The Project will operate in a transparent, open, collaborative, +* **e.** The Project will operate in a transparent, open, collaborative, and ethical manner at all times. The output of all Project discussions, proposals, timelines, decisions, and status should be made open and easily visible to all. Any potential violations of this @@ -174,7 +174,7 @@ the Project must comply with the terms of this Charter. 5. Community Assets - a. LF Projects will hold title to all trade or service marks used by +* **a.** LF Projects will hold title to all trade or service marks used by the Project (“Project Trademarks”), whether based on common law or registered rights. Project Trademarks will be transferred and assigned to LF Projects to hold on behalf of the Project. Any use of @@ -182,64 +182,64 @@ the Project must comply with the terms of this Charter. accordance with the license from LF Projects and inure to the benefit of LF Projects. - b. The Project shall, as permitted and in accordance with such +* **b.** The Project shall, as permitted and in accordance with such license from LF Projects, develop and own all Project GitHub and social media accounts, and domain name registrations created by the Project community. - c. Under no circumstances will LF Projects be expected or required to +* **c.** Under no circumstances will LF Projects be expected or required to undertake any action on behalf of the Project that is inconsistent with the tax-exempt status or purpose, as applicable, of LFP, Inc. or LF Projects, LLC. 6. General Rules and Operations. - a. The Project will: +* **a.** The Project will: - i. engage in the work of the project in a professional manner + * **i.** engage in the work of the project in a professional manner consistent with maintaining a cohesive community, while also maintaining the goodwill and esteem of LF Projects, LFP, Inc. and other partner organizations in the open source software community; and - ii. respect the rights of all trademark owners, including any + * **ii.** respect the rights of all trademark owners, including any branding and trademark usage guidelines. 7. Intellectual Property Policy - a. Participants acknowledge that the copyright in all new +* **a.** Participants acknowledge that the copyright in all new contributions shall be retained by the copyright holder as independent works of authorship and that no contributor or copyright holder will be required to assign copyrights to the Project. - b. Except as described in Section 7.c., all code contributions to the +* **b.** Except as described in Section 7.c., all code contributions to the Project are subject to the following: - i. All new inbound code contributions to the Project must be made + * **i.** All new inbound code contributions to the Project must be made using an OSI-approved open source license specified for the Project within the “LICENSE” file within the Project’s code repository (the “Project License”). - ii. All new inbound code contributions must: + * **ii.** All new inbound code contributions must: - 1. Be made pursuant to a binding Project Contribution License + 1. Be made pursuant to a binding Project Contribution License Agreement (the “CLA”) available on the Project’s web site; and - 2. be accompanied by a Developer Certificate of Origin + 2. be accompanied by a Developer Certificate of Origin ([http://developercertificate.org](http://developercertificate.org)) sign-off in the source code system that is submitted through a TSC-approved contribution process which will bind the authorized contributor and, if not self-employed, their employer to the applicable license; - iii. All outbound code will be made available under the Project License. + * **iii.** All outbound code will be made available under the Project License. - iv. Documentation will be received and made available by the Project + * **iv.** Documentation will be received and made available by the Project under the Creative Commons Attribution 4.0 International License (available at [http://creativecommons.org/licenses/by/4.0/](http://creativecommons.org/licenses/by/4.0/)). - v. The Project may seek to integrate and contribute back to other + * **v.** The Project may seek to integrate and contribute back to other open source projects (“Upstream Projects”). In such cases, the Project will conform to all license requirements of the Upstream Projects, including dependencies, leveraged by the Project. Upstream @@ -247,7 +247,7 @@ the Project must comply with the terms of this Charter. repository shall comply with the contribution process and license terms for the applicable Upstream Project. - c. If an alternative inbound or outbound license is required for +* **c.** If an alternative inbound or outbound license is required for compliance with the license for a leveraged open source project or is otherwise required to achieve the Project’s mission, the Governing Board of the Academy Software Foundation Fund of the Linux Foundation @@ -261,12 +261,12 @@ the Project must comply with the terms of this Charter. justification for using an alternative open source license for the Project. - d. Contributed files should contain license information, such as SPDX +* **d.** Contributed files should contain license information, such as SPDX short form identifiers, indicating the open source license or licenses pertaining to the file. 8. Amendments - a. This charter may be amended by a two-thirds vote of the entire +* **a.** This charter may be amended by a two-thirds vote of the entire TSC, subject to reasonable approval by LF Projects. From 3fccbdf9add5ab8d002e13878560eb963ef322fe Mon Sep 17 00:00:00 2001 From: Cary Phillips Date: Thu, 9 May 2019 11:05:50 -0700 Subject: [PATCH 13/17] formatting --- aswf-tsc/charter/OpenEXR-Technical-Charter.md | 452 +++++++++--------- 1 file changed, 231 insertions(+), 221 deletions(-) diff --git a/aswf-tsc/charter/OpenEXR-Technical-Charter.md b/aswf-tsc/charter/OpenEXR-Technical-Charter.md index 07652d2468..20219b384b 100644 --- a/aswf-tsc/charter/OpenEXR-Technical-Charter.md +++ b/aswf-tsc/charter/OpenEXR-Technical-Charter.md @@ -12,11 +12,11 @@ the Project must comply with the terms of this Charter. 1. Mission and Scope of the Project -* **a.** The mission of the Project is to continue maintenance and + * **a.** The mission of the Project is to continue maintenance and development of an open source project with the goals indicated in the “README” file within the Project’s code repository. -* **b.** The scope of the Project includes using existing OpenEXR + * **b.** The scope of the Project includes using existing OpenEXR repositories to seed the Project, and software development under an OSI-approved open source license supporting the mission, including documentation, testing, integration and the creation of @@ -25,248 +25,258 @@ the Project must comply with the terms of this Charter. 2. Technical Steering Committee -* **a.** The Technical Steering Committee (the “TSC”) will be responsible - for all technical oversight of the open source Project. - -* **b.** The TSC voting members shall be as set forth within the - “CONTRIBUTING” file within the Project’s code repository. A voting - member of the TSC may nominate a successor in the event that such - voting member decides to leave the TSC, and the TSC, including the - departing member, shall confirm or reject such nomination by a - vote. In the event that the departing member’s nomination for - successor is rejected by vote of the TSC, the departing member shall - be entitled to continue nominating successors until one such - successor is confirmed by vote of the TSC. If the departing member - fails or is unable to nominate a successor, the TSC may nominate one - on the departing member’s behalf. The TSC may also determine if and - how additional voting members of the TSC are chosen, and any such - approach will be documented in the CONTRIBUTING file, provided that - such approach does not conflict with this Charter. Any meetings of - the TSC are intended to be open to the public, except where there is - a reasonable need for privacy, and can be conducted electronically, - via teleconference, or in person. - -* **c.** TSC projects generally will involve Contributors and - Committers. The TSC may adopt or modify roles so long as the roles - are documented in the CONTRIBUTING file. Unless otherwise - documented: - - * **i.** Contributors include anyone in the technical community that - contributes code, documentation, or other technical artifacts to the - Project; - - * **ii.** Committers are Contributors who have earned the ability to - modify (“commit”) source code, documentation or other technical - artifacts in a project’s repository; and - - * **iii.** A Contributor may become a Committer by a majority approval of - the existing Committers or at the discretion of the TSC. A Committer - may be removed by a majority approval of the other existing - Committers, or at the discretion of the TSC. - -* **d.** Participation in the Project through becoming a Contributor and - Committer is open to anyone so long as they abide by the terms of - this Charter. - -* **e.** The TSC may (1) establish workflow procedures for the submission, - approval, and closure/archiving of projects, (2) set requirements for - the promotion of Contributors to Committer status, as applicable, and - (3) amend, adjust, refine and/or eliminate the roles of Contributors, - and Committers, and create new roles, and publicly document any TSC - roles, as it sees fit. - -* **f.** The TSC may elect a TSC Chair, who will preside over meetings of - the TSC and will serve until his or her resignation or replacement by - the TSC. The TSC Chair, or any other TSC member so designated by the - TSC, will serve as the primary communication contact between the - Project and the Academy Software Foundation Fund of The Linux - Foundation. - -* **g.** Responsibilities: The TSC will be responsible for all aspects of - oversight relating to the Project, which may include: - - * **i.** coordinating the technical direction of the Project; - - * **ii.** approving project or system proposals (including, but not - limited to, incubation, deprecation, and changes to a sub-project’s - scope); - - * **iii.** organizing sub-projects and removing projects; - - * **iv.** creating sub-committees or working groups to focus on - cross-project technical issues and requirements; - - * **v.** appointing representatives to work with other open source or open - standards communities; - - * **vi.** establishing community norms, workflows, issuing releases, and - security issue reporting policies; - - * **vii.** approving and implementing policies and processes for - contributing (to be published in the CONTRIBUTING file) and - coordinating with the Series Manager to resolve matters or concerns - that may arise as set forth in Section 7 of this Charter; - - * **viii.** discussions, seeking consensus, and where necessary, voting on - technical matters relating to the code base that affect multiple - projects; and - - * **ix.** coordinating any marketing, events, or communications regarding - the Project with the LF Projects Manager or their designee. + * **a.** The Technical Steering Committee (the “TSC”) will be + responsible for all technical oversight of the open source + Project. + + * **b.** The TSC voting members shall be as set forth within the + “CONTRIBUTING” file within the Project’s code repository. A voting + member of the TSC may nominate a successor in the event that such + voting member decides to leave the TSC, and the TSC, including the + departing member, shall confirm or reject such nomination by a + vote. In the event that the departing member’s nomination for + successor is rejected by vote of the TSC, the departing member + shall be entitled to continue nominating successors until one such + successor is confirmed by vote of the TSC. If the departing + member fails or is unable to nominate a successor, the TSC may + nominate one on the departing member’s behalf. The TSC may also + determine if and how additional voting members of the TSC are + chosen, and any such approach will be documented in the + CONTRIBUTING file, provided that such approach does not conflict + with this Charter. Any meetings of the TSC are intended to be open + to the public, except where there is a reasonable need for + privacy, and can be conducted electronically, via teleconference, + or in person. + + * **c.** TSC projects generally will involve Contributors and + Committers. The TSC may adopt or modify roles so long as the roles + are documented in the CONTRIBUTING file. Unless otherwise + documented: + + - **i.** Contributors include anyone in the technical community + that contributes code, documentation, or other technical + artifacts to the Project; + + - **ii.** Committers are Contributors who have earned the ability + to modify (“commit”) source code, documentation or other + technical artifacts in a project’s repository; and + + - **iii.** A Contributor may become a Committer by a majority + approval of the existing Committers or at the discretion of the + TSC. A Committer may be removed by a majority approval of the + other existing Committers, or at the discretion of the TSC. + + * **d.** Participation in the Project through becoming a Contributor + and Committer is open to anyone so long as they abide by the terms + of this Charter. + + * **e.** The TSC may (1) establish workflow procedures for the + submission, approval, and closure/archiving of projects, (2) set + requirements for the promotion of Contributors to Committer + status, as applicable, and (3) amend, adjust, refine and/or + eliminate the roles of Contributors, and Committers, and create + new roles, and publicly document any TSC roles, as it sees fit. + + * **f.** The TSC may elect a TSC Chair, who will preside over + meetings of the TSC and will serve until his or her resignation or + replacement by the TSC. The TSC Chair, or any other TSC member so + designated by the TSC, will serve as the primary communication + contact between the Project and the Academy Software Foundation + Fund of The Linux Foundation. + + * **g.** Responsibilities: The TSC will be responsible for all + aspects of oversight relating to the Project, which may include: + + - **i.** coordinating the technical direction of the Project; + + - **ii.** approving project or system proposals (including, but + not limited to, incubation, deprecation, and changes to a + sub-project’s scope); + + - **iii.** organizing sub-projects and removing projects; + + - **iv.** creating sub-committees or working groups to focus on + cross-project technical issues and requirements; + + - **v.** appointing representatives to work with other open source + or open standards communities; + + - **vi.** establishing community norms, workflows, issuing + releases, and security issue reporting policies; + + - **vii.** approving and implementing policies and processes for + contributing (to be published in the CONTRIBUTING file) and + coordinating with the Series Manager to resolve matters or + concerns that may arise as set forth in Section 7 of this + Charter; + + - **viii.** discussions, seeking consensus, and where necessary, + voting on technical matters relating to the code base that + affect multiple projects; and + + - **ix.** coordinating any marketing, events, or communications + regarding the Project with the LF Projects Manager or their + designee. 3. TSC Voting -* **a.** While the Project aims to operate as a consensus based community, - if any TSC decision requires a vote to move the Project forward, the - voting members of the TSC will vote on a one vote per voting member - basis. + * **a.** While the Project aims to operate as a consensus based + community, if any TSC decision requires a vote to move the Project + forward, the voting members of the TSC will vote on a one vote per + voting member basis. -* **b.** At least fifty percent of all voting members of the TSC must be - present at a TSC meeting in order to establish a quorum. The TSC may - continue to meet if a quorum is not met, but will be prevented from - making any decisions at such meeting. + * **b.** At least fifty percent of all voting members of the TSC + must be present at a TSC meeting in order to establish a + quorum. The TSC may continue to meet if a quorum is not met, but + will be prevented from making any decisions at such meeting. -* **c.** Except as provided in Section 7.c. and 8.a, decisions by vote at a - meeting require a majority vote of those in attendance, provided - quorum is met. Decisions made by electronic vote without a meeting - require a majority vote of all voting members of the TSC. + * **c.** Except as provided in Section 7.c. and 8.a, decisions by + vote at a meeting require a majority vote of those in attendance, + provided quorum is met. Decisions made by electronic vote without + a meeting require a majority vote of all voting members of the + TSC. -* **d.** In the event a vote cannot be resolved by the TSC, any voting - member of the TSC may refer the matter to the Series Manager or its - designee for assistance in reaching a resolution. + * **d.** In the event a vote cannot be resolved by the TSC, any + voting member of the TSC may refer the matter to the Series + Manager or its designee for assistance in reaching a resolution. 4. Compliance with Policies -* **a.** This Charter is subject to the Series Agreement for the Project - and the Operating Agreement of LF Projects. Contributors will comply - with the policies of LF Projects as may be adopted and amended by LF - Projects, including, without limitation the policies listed at - https://lfprojects.org/policies/. - -* **b.** The TSC may adopt a code of conduct (“CoC”) for the Project, which - is subject to approval by the Series Manager. Contributors to the - Project will comply with the CoC or, in the event that a - Project-specific CoC has not been approved, the LF Projects Code of - Conduct listed at https://lfprojects.org/policies/. - -* **c.** When amending or adopting any policy applicable to the Project, LF - Projects will publish such policy, as to be amended or adopted, on - its web site at least 30 days prior to such policy taking effect; - provided, however, that in the case of any amendment of the Trademark - Policy or Terms of Use of LF Projects, any such amendment is - effective upon publication on LF Project’s web site. - -* **d.** All participants must allow open participation from any individual - or organization meeting the requirements for contributing under this - Charter and any policies adopted for all participants by the TSC, - regardless of competitive interests. Put another way, the Project - community must not seek to exclude any participant based on any - criteria, requirement, or reason other than those that are reasonable - and applied on a non-discriminatory basis to all participants in the - Project community. - -* **e.** The Project will operate in a transparent, open, collaborative, - and ethical manner at all times. The output of all Project - discussions, proposals, timelines, decisions, and status should be - made open and easily visible to all. Any potential violations of this - requirement should be reported immediately to the LF Projects - Manager. + * **a.** This Charter is subject to the Series Agreement for the + Project and the Operating Agreement of LF Projects. Contributors + will comply with the policies of LF Projects as may be adopted and + amended by LF Projects, including, without limitation the policies + listed at https://lfprojects.org/policies/. + + * **b.** The TSC may adopt a code of conduct (“CoC”) for the + Project, which is subject to approval by the Series Manager. + Contributors to the Project will comply with the CoC or, in the + event that a Project-specific CoC has not been approved, the LF + Projects Code of Conduct listed at + https://lfprojects.org/policies/. + + * **c.** When amending or adopting any policy applicable to the + Project, LF Projects will publish such policy, as to be amended or + adopted, on its web site at least 30 days prior to such policy + taking effect; provided, however, that in the case of any + amendment of the Trademark Policy or Terms of Use of LF Projects, + any such amendment is effective upon publication on LF Project’s + web site. + + * **d.** All participants must allow open participation from any + individual or organization meeting the requirements for + contributing under this Charter and any policies adopted for all + participants by the TSC, regardless of competitive interests. Put + another way, the Project community must not seek to exclude any + participant based on any criteria, requirement, or reason other + than those that are reasonable and applied on a non-discriminatory + basis to all participants in the Project community. + + * **e.** The Project will operate in a transparent, open, + collaborative, and ethical manner at all times. The output of all + Project discussions, proposals, timelines, decisions, and status + should be made open and easily visible to all. Any potential + violations of this requirement should be reported immediately to + the LF Projects Manager. 5. Community Assets -* **a.** LF Projects will hold title to all trade or service marks used by - the Project (“Project Trademarks”), whether based on common law or - registered rights. Project Trademarks will be transferred and - assigned to LF Projects to hold on behalf of the Project. Any use of - any Project Trademarks by participants in the Project will be in - accordance with the license from LF Projects and inure to the benefit - of LF Projects. + * **a.** LF Projects will hold title to all trade or service marks + used by the Project (“Project Trademarks”), whether based on + common law or registered rights. Project Trademarks will be + transferred and assigned to LF Projects to hold on behalf of the + Project. Any use of any Project Trademarks by participants in the + Project will be in accordance with the license from LF Projects + and inure to the benefit of LF Projects. -* **b.** The Project shall, as permitted and in accordance with such - license from LF Projects, develop and own all Project GitHub and - social media accounts, and domain name registrations created by the - Project community. + * **b.** The Project shall, as permitted and in accordance with such + license from LF Projects, develop and own all Project GitHub and + social media accounts, and domain name registrations created by + the Project community. -* **c.** Under no circumstances will LF Projects be expected or required to - undertake any action on behalf of the Project that is inconsistent - with the tax-exempt status or purpose, as applicable, of LFP, Inc. or - LF Projects, LLC. + * **c.** Under no circumstances will LF Projects be expected or + required to undertake any action on behalf of the Project that is + inconsistent with the tax-exempt status or purpose, as applicable, + of LFP, Inc. or LF Projects, LLC. 6. General Rules and Operations. -* **a.** The Project will: + * **a.** The Project will: - * **i.** engage in the work of the project in a professional manner - consistent with maintaining a cohesive community, while also - maintaining the goodwill and esteem of LF Projects, LFP, Inc. and - other partner organizations in the open source software community; - and + - **i.** engage in the work of the project in a professional + manner consistent with maintaining a cohesive community, while + also maintaining the goodwill and esteem of LF Projects, LFP, + Inc. and other partner organizations in the open source software + community; and - * **ii.** respect the rights of all trademark owners, including any - branding and trademark usage guidelines. + - **ii.** respect the rights of all trademark owners, including + any branding and trademark usage guidelines. 7. Intellectual Property Policy -* **a.** Participants acknowledge that the copyright in all new - contributions shall be retained by the copyright holder as - independent works of authorship and that no contributor or copyright - holder will be required to assign copyrights to the Project. - -* **b.** Except as described in Section 7.c., all code contributions to the - Project are subject to the following: - - * **i.** All new inbound code contributions to the Project must be made - using an OSI-approved open source license specified for the Project - within the “LICENSE” file within the Project’s code repository (the - “Project License”). - - * **ii.** All new inbound code contributions must: - - 1. Be made pursuant to a binding Project Contribution License - Agreement (the “CLA”) available on the Project’s web site; and - - 2. be accompanied by a Developer Certificate of Origin - ([http://developercertificate.org](http://developercertificate.org)) - sign-off in the source code system that is submitted through a - TSC-approved contribution process which will bind the authorized - contributor and, if not self-employed, their employer to the - applicable license; - - * **iii.** All outbound code will be made available under the Project License. - - * **iv.** Documentation will be received and made available by the Project - under the Creative Commons Attribution 4.0 International License - (available at - [http://creativecommons.org/licenses/by/4.0/](http://creativecommons.org/licenses/by/4.0/)). - - * **v.** The Project may seek to integrate and contribute back to other - open source projects (“Upstream Projects”). In such cases, the - Project will conform to all license requirements of the Upstream - Projects, including dependencies, leveraged by the Project. Upstream - Project code contributions not stored within the Project’s main code - repository shall comply with the contribution process and license - terms for the applicable Upstream Project. - -* **c.** If an alternative inbound or outbound license is required for - compliance with the license for a leveraged open source project or is - otherwise required to achieve the Project’s mission, the Governing - Board of the Academy Software Foundation Fund of the Linux Foundation - (“Governing Board”), or the Governing Board’s representatives - designated for such purpose, may approve the use of an alternative - license for specific inbound or outbound contributions on an - exception basis. Any exceptions must be approved by a vote of the - Governing Board and must be limited in scope to what is required for - such a purpose. To request an exception, please describe the - contribution, the alternative open source license(s), and the - justification for using an alternative open source license for the - Project. - -* **d.** Contributed files should contain license information, such as SPDX - short form identifiers, indicating the open source license or - licenses pertaining to the file. + * **a.** Participants acknowledge that the copyright in all new + contributions shall be retained by the copyright holder as + independent works of authorship and that no contributor or + copyright holder will be required to assign copyrights to the + Project. + + * **b.** Except as described in Section 7.c., all code contributions + to the Project are subject to the following: + + - **i.** All new inbound code contributions to the Project must be + made using an OSI-approved open source license specified for the + Project within the “LICENSE” file within the Project’s code + repository (the “Project License”). + + - **ii.** All new inbound code contributions must: + + o **1.** Be made pursuant to a binding Project Contribution License + Agreement (the “CLA”) available on the Project’s web site; and + + o **2.** be accompanied by a Developer Certificate of Origin + ([http://developercertificate.org](http://developercertificate.org)) + sign-off in the source code system that is submitted through a + TSC-approved contribution process which will bind the + authorized contributor and, if not self-employed, their + employer to the applicable license; + + - **iii.** All outbound code will be made available under the + Project License. + + - **iv.** Documentation will be received and made available by the + Project under the Creative Commons Attribution 4.0 International + License (available at + [http://creativecommons.org/licenses/by/4.0/](http://creativecommons.org/licenses/by/4.0/)). + + - **v.** The Project may seek to integrate and contribute back to + other open source projects (“Upstream Projects”). In such cases, + the Project will conform to all license requirements of the + Upstream Projects, including dependencies, leveraged by the + Project. Upstream Project code contributions not stored within + the Project’s main code repository shall comply with the + contribution process and license terms for the applicable + Upstream Project. + + * **c.** If an alternative inbound or outbound license is required + for compliance with the license for a leveraged open source + project or is otherwise required to achieve the Project’s mission, + the Governing Board of the Academy Software Foundation Fund of the + Linux Foundation (“Governing Board”), or the Governing Board’s + representatives designated for such purpose, may approve the use + of an alternative license for specific inbound or outbound + contributions on an exception basis. Any exceptions must be + approved by a vote of the Governing Board and must be limited in + scope to what is required for such a purpose. To request an + exception, please describe the contribution, the alternative open + source license(s), and the justification for using an alternative + open source license for the Project. + + * **d.** Contributed files should contain license information, such + as SPDX short form identifiers, indicating the open source license + or licenses pertaining to the file. 8. Amendments -* **a.** This charter may be amended by a two-thirds vote of the entire - TSC, subject to reasonable approval by LF Projects. + * **a.** This charter may be amended by a two-thirds vote of the + entire TSC, subject to reasonable approval by LF Projects. From e565a35f9610f070de194674f8b27ca9b2b01aa5 Mon Sep 17 00:00:00 2001 From: Cary Phillips Date: Thu, 9 May 2019 11:09:40 -0700 Subject: [PATCH 14/17] more formatting fixes --- aswf-tsc/charter/OpenEXR-Technical-Charter.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/aswf-tsc/charter/OpenEXR-Technical-Charter.md b/aswf-tsc/charter/OpenEXR-Technical-Charter.md index 20219b384b..42bfc03e15 100644 --- a/aswf-tsc/charter/OpenEXR-Technical-Charter.md +++ b/aswf-tsc/charter/OpenEXR-Technical-Charter.md @@ -10,7 +10,7 @@ of LF Projects, LLC** (the “Project”). LF Projects, LLC (“LF Projects”) is a Delaware series limited liability company. All Contributors to the Project must comply with the terms of this Charter. -1. Mission and Scope of the Project +### 1. Mission and Scope of the Project * **a.** The mission of the Project is to continue maintenance and development of an open source project with the goals indicated in @@ -23,7 +23,7 @@ the Project must comply with the terms of this Charter. other artifacts that aid the development, deployment, operation or adoption of the open source software project. -2. Technical Steering Committee +### 2. Technical Steering Committee * **a.** The Technical Steering Committee (the “TSC”) will be responsible for all technical oversight of the open source @@ -118,7 +118,7 @@ the Project must comply with the terms of this Charter. regarding the Project with the LF Projects Manager or their designee. -3. TSC Voting +### 3. TSC Voting * **a.** While the Project aims to operate as a consensus based community, if any TSC decision requires a vote to move the Project @@ -140,7 +140,7 @@ the Project must comply with the terms of this Charter. voting member of the TSC may refer the matter to the Series Manager or its designee for assistance in reaching a resolution. -4. Compliance with Policies +### 4. Compliance with Policies * **a.** This Charter is subject to the Series Agreement for the Project and the Operating Agreement of LF Projects. Contributors @@ -179,7 +179,7 @@ the Project must comply with the terms of this Charter. violations of this requirement should be reported immediately to the LF Projects Manager. -5. Community Assets +### 5. Community Assets * **a.** LF Projects will hold title to all trade or service marks used by the Project (“Project Trademarks”), whether based on @@ -199,7 +199,7 @@ the Project must comply with the terms of this Charter. inconsistent with the tax-exempt status or purpose, as applicable, of LFP, Inc. or LF Projects, LLC. -6. General Rules and Operations. +### 6. General Rules and Operations. * **a.** The Project will: @@ -212,7 +212,7 @@ the Project must comply with the terms of this Charter. - **ii.** respect the rights of all trademark owners, including any branding and trademark usage guidelines. -7. Intellectual Property Policy +### 7. Intellectual Property Policy * **a.** Participants acknowledge that the copyright in all new contributions shall be retained by the copyright holder as @@ -275,7 +275,7 @@ the Project must comply with the terms of this Charter. as SPDX short form identifiers, indicating the open source license or licenses pertaining to the file. -8. Amendments +### 8. Amendments * **a.** This charter may be amended by a two-thirds vote of the entire TSC, subject to reasonable approval by LF Projects. From 245f0389623ef1b7aaaba0085c5c81e0f081680e Mon Sep 17 00:00:00 2001 From: Cary Phillips Date: Thu, 9 May 2019 17:19:56 -0700 Subject: [PATCH 15/17] meeting notes --- aswf-tsc/meetings/2019-05-02.md | 11 ++++------- aswf-tsc/meetings/2019-05-09.md | 27 +++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 7 deletions(-) create mode 100644 aswf-tsc/meetings/2019-05-09.md diff --git a/aswf-tsc/meetings/2019-05-02.md b/aswf-tsc/meetings/2019-05-02.md index c5eb86781c..396648810d 100644 --- a/aswf-tsc/meetings/2019-05-02.md +++ b/aswf-tsc/meetings/2019-05-02.md @@ -1,7 +1,6 @@ -5/2/2019 -======== +# 5/2/2019 -Attending: +### Attending: * John Mertic * Cary Phillips * Rod Bogart @@ -9,8 +8,7 @@ Attending: * Larry Gritz * Daniel Heckenberg -Personal introductions: ------------------------ +### Personal introductions: * John Mertic: Linux Foundation - Director of Program Management. Help getting project up and going, helping with issues and concerns. * Peter Hillman: Weta, worked on OpenEXR deep stuff. @@ -19,8 +17,7 @@ Personal introductions: * Rod Bogart: One of the originators with Florian Kainz and Drew Hess. Involvement has been on and off, mostly off lately. Vice chair of the Academy’s ACES project. * Daniel Heckenberg: ASWF TAC chair. -Discussion: ------------ +### Discussion: * John: We are the Technical Steering Committee: diff --git a/aswf-tsc/meetings/2019-05-09.md b/aswf-tsc/meetings/2019-05-09.md new file mode 100644 index 0000000000..9951df86cf --- /dev/null +++ b/aswf-tsc/meetings/2019-05-09.md @@ -0,0 +1,27 @@ + +# 5/9/2019 + +### Agenda: +* How many mailing lists? What do to with old messages? +* Jira for TSC task tracking? +* CII badge form todo’s +* TSC membership - who else? +* Website management + +### Attending: +* Cary Phillips +* Larry Gritz +* Peter Hillman +* John Mertic + +### Discusion: + +We discussed mail aliases and settled on a single alias, [openexr-dev@lists.aswf.io](mailto:openexr-dev@lists.aswf.io). Cary will send a message to the old aliases requesting that people sign up for the new one. After a grace period, we’ll import the old list history into the new list and then disable the old lists altogether. That’s better than importing this history right away, which might fail to capture discussion that happens between now and the transitions. + +We can use hashtag to limit the discussion and help filter discussions by topic. + +We briefly discussed Jira - there is an OpenEXR Jira board at [https://jira.aswf.io/secure/Dashboard.jspa](https://jira.aswf.io/secure/Dashboard.jspa). But we decided to keep things informal for now and rely on GitHub Issues to track todo items, and adopt Jira only if a need emerges. + +We agreed to look at OpenColorIO as a template for processes, and the process documentation in particular, for code formatting style guide, code review process, etc. + +Beyond administrative issues like the web site and the CII Best Practices Badge checklist, we discussed diving straight into more substantive issues like the future of IlmBase - separate repo vs. keeping it as a subproject, as well as cleaning up and modernizing the code, adding proper use of consexpr, etc. From 1b0f1e5d7dcf2e9d6cbb4e005e803808b010b1e0 Mon Sep 17 00:00:00 2001 From: pgajdos Date: Fri, 14 Jun 2019 22:19:30 +0200 Subject: [PATCH 16/17] fix CVE-2018-18444 --- OpenEXR/exrmultiview/Image.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenEXR/exrmultiview/Image.h b/OpenEXR/exrmultiview/Image.h index 5d718f5d78..c465d380e0 100644 --- a/OpenEXR/exrmultiview/Image.h +++ b/OpenEXR/exrmultiview/Image.h @@ -227,7 +227,7 @@ template void TypedImageChannel::black () { - memset(&_pixels[0][0],0,image().width()/_xSampling*image().height()/_ySampling*sizeof(T)); + memset(&_pixels[0][0],0,image().width()/_xSampling*(image().height()/_ySampling)*sizeof(T)); } From b3b0de91b3a8c70d26b6da51d9d14c5d32266cb5 Mon Sep 17 00:00:00 2001 From: pgajdos Date: Fri, 14 Jun 2019 22:20:38 +0200 Subject: [PATCH 17/17] fix CVE-2017-9111,9113,9115 --- OpenEXR/exrmakepreview/makePreview.cpp | 3 +++ OpenEXR/exrmaketiled/Image.h | 3 +++ 2 files changed, 6 insertions(+) diff --git a/OpenEXR/exrmakepreview/makePreview.cpp b/OpenEXR/exrmakepreview/makePreview.cpp index 8df77ef657..98df627a54 100644 --- a/OpenEXR/exrmakepreview/makePreview.cpp +++ b/OpenEXR/exrmakepreview/makePreview.cpp @@ -110,6 +110,9 @@ generatePreview (const char inFileName[], int h = dw.max.y - dw.min.y + 1; Array2D pixels (h, w); + if (INT_MAX / abs(w) < abs(dw.min.y) || + INT_MAX - abs(dw.min.x) < abs(dw.min.y * w)) + throw IEX_NAMESPACE::ArgExc ("Invalid data window in image header."); in.setFrameBuffer (&pixels[0][0] - dw.min.y * w - dw.min.x, 1, w); in.readPixels (dw.min.y, dw.max.y); diff --git a/OpenEXR/exrmaketiled/Image.h b/OpenEXR/exrmaketiled/Image.h index 21253bb7ff..564e068832 100644 --- a/OpenEXR/exrmaketiled/Image.h +++ b/OpenEXR/exrmaketiled/Image.h @@ -192,6 +192,9 @@ TypedImageChannel::slice () const const IMATH_NAMESPACE::Box2i &dw = image().dataWindow(); int w = dw.max.x - dw.min.x + 1; + if (INT_MAX / abs(w) < abs(dw.min.y) || + INT_MAX - abs(dw.min.x) < abs(dw.min.y * w)) + throw IEX_NAMESPACE::ArgExc ("Invalid data window in image header."); return OPENEXR_IMF_INTERNAL_NAMESPACE::Slice (pixelType(), (char *) (&_pixels[0][0] - dw.min.y * w - dw.min.x), sizeof (T),