From 99cc23b4c42247b75df44928f3323523d6688f22 Mon Sep 17 00:00:00 2001 From: Cary Phillips Date: Wed, 20 Nov 2024 14:49:12 -0800 Subject: [PATCH] Add Linux clang build Signed-off-by: Cary Phillips --- .github/workflows/ci_steps.yml | 13 +- .github/workflows/ci_workflow.yml | 16 +- .../install_manifest.ubuntu.10.txt | 217 ++++++++++++++++++ .../install_manifest.ubuntu.7.txt | 32 +-- 4 files changed, 254 insertions(+), 24 deletions(-) create mode 100644 share/ci/install_manifest/install_manifest.ubuntu.10.txt diff --git a/.github/workflows/ci_steps.yml b/.github/workflows/ci_steps.yml index fa72ec033..b50620a60 100644 --- a/.github/workflows/ci_steps.yml +++ b/.github/workflows/ci_steps.yml @@ -25,6 +25,10 @@ on: type: string cxx-standard: type: string + cxx-compiler: + type: string + cc-compiler: + type: string build-type: type: string BUILD_SHARED_LIBS: @@ -51,13 +55,15 @@ on: type: string jobs: - ci_steps: + steps: runs-on: ${{ inputs.os }} container: image: ${{ inputs.container }} env: + CXX: ${{ inputs.cxx-compiler }} + CC: ${{ inputs.cc-compiler }} ACTIONS_RUNNER_FORCE_ACTIONS_NODE_VERSION: node16 ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true @@ -107,7 +113,6 @@ jobs: -DBUILD_TESTING=${{ inputs.BUILD_TESTING }} \ -DOPENEXR_RUN_FUZZ_TESTS=OFF \ -DCMAKE_VERBOSE_MAKEFILE=ON" - echo "namespace: " ${{ inputs.namespace }} if [ -n "${{ inputs.namespace }}" ]; then CMAKE_COMMAND="$CMAKE_COMMAND \ -DOPENEXR_IMF_NAMESPACE=${{ inputs.namespace }} \ @@ -136,7 +141,6 @@ jobs: shell: bash - name: Prepare install_manifest - if: ${{ inputs.validate_install != 'OFF' }} # Store the cmake command as the first line of the manifest, # and remove the path prefix, so the manifest contains only # the local filenames. @@ -146,7 +150,6 @@ jobs: shell: bash - name: Upload install_manifest.txt - if: ${{ inputs.validate_install != 'OFF' }} # Upload the manifest to make it possible to download for inspection and debugging uses: actions/upload-artifact@v3 with: @@ -154,7 +157,7 @@ jobs: path: _build/${{ env.INSTALL_MANIFEST }} - name: Validate install - if: ${{ inputs.validate_install != 'OFF' }} + if: ${{ inputs.validate_install == 'ON' }} # Validate that the build has installed the proper files by comparing against the appropriate reference manifest run: | share/ci/scripts/validate_install.py "_build/$INSTALL_MANIFEST" "share/ci/install_manifest/$INSTALL_MANIFEST" diff --git a/.github/workflows/ci_workflow.yml b/.github/workflows/ci_workflow.yml index d3180b19c..fd98c66e7 100644 --- a/.github/workflows/ci_workflow.yml +++ b/.github/workflows/ci_workflow.yml @@ -66,6 +66,8 @@ jobs: # Source: https://github.com/AcademySoftwareFoundation/aswf-docker container: aswf/ci-openexr:${{ matrix.vfx-cy || '2024' }} cxx-standard: ${{ matrix.cxx-standard || '17' }} + cxx-compiler: ${{ matrix.cxx-compiler || 'g++' }} + cc-compiler: ${{ matrix.cc-compiler || 'gcc' }} build-type: ${{ matrix.build-type || 'Release' }} BUILD_SHARED_LIBS: ${{ matrix.BUILD_SHARED_LIBS || 'ON' }} OPENEXR_ENABLE_THREADING: ${{ matrix.OPENEXR_ENABLE_THREADING || 'ON' }} @@ -77,6 +79,7 @@ jobs: OPENEXR_FORCE_INTERNAL_DEFLATE: ${{ matrix.OPENEXR_FORCE_INTERNAL_DEFLATE || 'OFF' }} BUILD_TESTING: ${{ matrix.BUILD_TESTING || 'ON' }} namespace: ${{ matrix.namespace }} + validate_install: ${{ matrix.validate_install || 'ON' }} strategy: matrix: include: @@ -108,17 +111,22 @@ jobs: - build: 6 label: custom namespace - namespace: XXX + namespace: 'TEST_NAMESPACE' - build: 7 + label: clang + cxx-compiler: clang++ + cc-compiler: clang + + - build: 8 label: vfx2023 vfx-cy: 2023 - - build: 8 + - build: 9 label: vfx2022 vfx-cy: 2022 - - build: 9 + - build: 10 label: vfx2021 vfx-cy: 2021 @@ -142,6 +150,7 @@ jobs: OPENEXR_FORCE_INTERNAL_IMATH: ${{ matrix.OPENEXR_FORCE_INTERNAL_IMATH || 'OFF' }} OPENEXR_FORCE_INTERNAL_DEFLATE: ${{ matrix.OPENEXR_FORCE_INTERNAL_DEFLATE || 'OFF' }} BUILD_TESTING: ${{ matrix.BUILD_TESTING || 'ON' }} + validate_install: ${{ matrix.validate_install || 'ON' }} strategy: matrix: include: @@ -195,6 +204,7 @@ jobs: OPENEXR_FORCE_INTERNAL_IMATH: ${{ matrix.OPENEXR_FORCE_INTERNAL_IMATH || 'OFF' }} OPENEXR_FORCE_INTERNAL_DEFLATE: ${{ matrix.OPENEXR_FORCE_INTERNAL_DEFLATE || 'OFF' }} BUILD_TESTING: ${{ matrix.BUILD_TESTING || 'ON' }} + validate_install: ${{ matrix.validate_install || 'ON' }} strategy: matrix: include: diff --git a/share/ci/install_manifest/install_manifest.ubuntu.10.txt b/share/ci/install_manifest/install_manifest.ubuntu.10.txt new file mode 100644 index 000000000..669a1cdaf --- /dev/null +++ b/share/ci/install_manifest/install_manifest.ubuntu.10.txt @@ -0,0 +1,217 @@ +# cmake -B . -S .. -DCMAKE_INSTALL_PREFIX=../_install -DCMAKE_BUILD_TYPE=Release -DOPENEXR_CXX_STANDARD=17 -DBUILD_SHARED_LIBS=ON -DOPENEXR_ENABLE_THREADING=ON -DOPENEXR_INSTALL_PKG_CONFIG=ON -DOPENEXR_INSTALL_DOCS=ON -DOPENEXR_BUILD_EXAMPLES=ON -DOPENEXR_BUILD_TOOLS=ON -DOPENEXR_FORCE_INTERNAL_IMATH=OFF -DOPENEXR_FORCE_INTERNAL_DEFLATE=OFF -DBUILD_TESTING=ON -DOPENEXR_RUN_FUZZ_TESTS='OFF' -DCMAKE_VERBOSE_MAKEFILE='ON' +bin/exr2aces +bin/exrenvmap +bin/exrheader +bin/exrinfo +bin/exrmakepreview +bin/exrmaketiled +bin/exrmanifest +bin/exrmetrics +bin/exrmultipart +bin/exrmultiview +bin/exrstdattr +include/OpenEXR/Iex.h +include/OpenEXR/IexBaseExc.h +include/OpenEXR/IexConfig.h +include/OpenEXR/IexErrnoExc.h +include/OpenEXR/IexExport.h +include/OpenEXR/IexForward.h +include/OpenEXR/IexMacros.h +include/OpenEXR/IexMathExc.h +include/OpenEXR/IexMathFloatExc.h +include/OpenEXR/IexMathIeeeExc.h +include/OpenEXR/IexNamespace.h +include/OpenEXR/IexThrowErrnoExc.h +include/OpenEXR/IlmThread.h +include/OpenEXR/IlmThreadConfig.h +include/OpenEXR/IlmThreadExport.h +include/OpenEXR/IlmThreadForward.h +include/OpenEXR/IlmThreadMutex.h +include/OpenEXR/IlmThreadNamespace.h +include/OpenEXR/IlmThreadPool.h +include/OpenEXR/IlmThreadProcessGroup.h +include/OpenEXR/IlmThreadSemaphore.h +include/OpenEXR/ImfAcesFile.h +include/OpenEXR/ImfArray.h +include/OpenEXR/ImfAttribute.h +include/OpenEXR/ImfBoxAttribute.h +include/OpenEXR/ImfCRgbaFile.h +include/OpenEXR/ImfChannelList.h +include/OpenEXR/ImfChannelListAttribute.h +include/OpenEXR/ImfCheckFile.h +include/OpenEXR/ImfChromaticities.h +include/OpenEXR/ImfChromaticitiesAttribute.h +include/OpenEXR/ImfCompositeDeepScanLine.h +include/OpenEXR/ImfCompression.h +include/OpenEXR/ImfCompressionAttribute.h +include/OpenEXR/ImfCompressor.h +include/OpenEXR/ImfContext.h +include/OpenEXR/ImfContextInit.h +include/OpenEXR/ImfConvert.h +include/OpenEXR/ImfDeepCompositing.h +include/OpenEXR/ImfDeepFrameBuffer.h +include/OpenEXR/ImfDeepImage.h +include/OpenEXR/ImfDeepImageChannel.h +include/OpenEXR/ImfDeepImageIO.h +include/OpenEXR/ImfDeepImageLevel.h +include/OpenEXR/ImfDeepImageState.h +include/OpenEXR/ImfDeepImageStateAttribute.h +include/OpenEXR/ImfDeepScanLineInputFile.h +include/OpenEXR/ImfDeepScanLineInputPart.h +include/OpenEXR/ImfDeepScanLineOutputFile.h +include/OpenEXR/ImfDeepScanLineOutputPart.h +include/OpenEXR/ImfDeepTiledInputFile.h +include/OpenEXR/ImfDeepTiledInputPart.h +include/OpenEXR/ImfDeepTiledOutputFile.h +include/OpenEXR/ImfDeepTiledOutputPart.h +include/OpenEXR/ImfDoubleAttribute.h +include/OpenEXR/ImfEnvmap.h +include/OpenEXR/ImfEnvmapAttribute.h +include/OpenEXR/ImfExport.h +include/OpenEXR/ImfFlatImage.h +include/OpenEXR/ImfFlatImageChannel.h +include/OpenEXR/ImfFlatImageIO.h +include/OpenEXR/ImfFlatImageLevel.h +include/OpenEXR/ImfFloatAttribute.h +include/OpenEXR/ImfFloatVectorAttribute.h +include/OpenEXR/ImfForward.h +include/OpenEXR/ImfFrameBuffer.h +include/OpenEXR/ImfFramesPerSecond.h +include/OpenEXR/ImfGenericInputFile.h +include/OpenEXR/ImfGenericOutputFile.h +include/OpenEXR/ImfHeader.h +include/OpenEXR/ImfHuf.h +include/OpenEXR/ImfIDManifest.h +include/OpenEXR/ImfIDManifestAttribute.h +include/OpenEXR/ImfIO.h +include/OpenEXR/ImfImage.h +include/OpenEXR/ImfImageChannel.h +include/OpenEXR/ImfImageChannelRenaming.h +include/OpenEXR/ImfImageDataWindow.h +include/OpenEXR/ImfImageIO.h +include/OpenEXR/ImfImageLevel.h +include/OpenEXR/ImfInputFile.h +include/OpenEXR/ImfInputPart.h +include/OpenEXR/ImfInt64.h +include/OpenEXR/ImfIntAttribute.h +include/OpenEXR/ImfKeyCode.h +include/OpenEXR/ImfKeyCodeAttribute.h +include/OpenEXR/ImfLineOrder.h +include/OpenEXR/ImfLineOrderAttribute.h +include/OpenEXR/ImfLut.h +include/OpenEXR/ImfMatrixAttribute.h +include/OpenEXR/ImfMisc.h +include/OpenEXR/ImfMultiPartInputFile.h +include/OpenEXR/ImfMultiPartOutputFile.h +include/OpenEXR/ImfMultiView.h +include/OpenEXR/ImfName.h +include/OpenEXR/ImfNamespace.h +include/OpenEXR/ImfOpaqueAttribute.h +include/OpenEXR/ImfOutputFile.h +include/OpenEXR/ImfOutputPart.h +include/OpenEXR/ImfPartHelper.h +include/OpenEXR/ImfPartType.h +include/OpenEXR/ImfPixelType.h +include/OpenEXR/ImfPreviewImage.h +include/OpenEXR/ImfPreviewImageAttribute.h +include/OpenEXR/ImfRational.h +include/OpenEXR/ImfRationalAttribute.h +include/OpenEXR/ImfRgba.h +include/OpenEXR/ImfRgbaFile.h +include/OpenEXR/ImfRgbaYca.h +include/OpenEXR/ImfSampleCountChannel.h +include/OpenEXR/ImfStandardAttributes.h +include/OpenEXR/ImfStdIO.h +include/OpenEXR/ImfStringAttribute.h +include/OpenEXR/ImfStringVectorAttribute.h +include/OpenEXR/ImfTestFile.h +include/OpenEXR/ImfThreading.h +include/OpenEXR/ImfTileDescription.h +include/OpenEXR/ImfTileDescriptionAttribute.h +include/OpenEXR/ImfTiledInputFile.h +include/OpenEXR/ImfTiledInputPart.h +include/OpenEXR/ImfTiledOutputFile.h +include/OpenEXR/ImfTiledOutputPart.h +include/OpenEXR/ImfTiledRgbaFile.h +include/OpenEXR/ImfTimeCode.h +include/OpenEXR/ImfTimeCodeAttribute.h +include/OpenEXR/ImfUtilExport.h +include/OpenEXR/ImfVecAttribute.h +include/OpenEXR/ImfVersion.h +include/OpenEXR/ImfWav.h +include/OpenEXR/ImfXdr.h +include/OpenEXR/OpenEXRConfig.h +include/OpenEXR/openexr.h +include/OpenEXR/openexr_attr.h +include/OpenEXR/openexr_base.h +include/OpenEXR/openexr_chunkio.h +include/OpenEXR/openexr_coding.h +include/OpenEXR/openexr_compression.h +include/OpenEXR/openexr_config.h +include/OpenEXR/openexr_context.h +include/OpenEXR/openexr_debug.h +include/OpenEXR/openexr_decode.h +include/OpenEXR/openexr_encode.h +include/OpenEXR/openexr_errors.h +include/OpenEXR/openexr_part.h +include/OpenEXR/openexr_std_attr.h +include/OpenEXR/openexr_version.h +lib64/cmake/OpenEXR/OpenEXRConfig.cmake +lib64/cmake/OpenEXR/OpenEXRConfigVersion.cmake +lib64/cmake/OpenEXR/OpenEXRTargets-release.cmake +lib64/cmake/OpenEXR/OpenEXRTargets.cmake +lib64/libIex-$MAJOR_$MINOR.so +lib64/libIex-$MAJOR_$MINOR.so.$SOVERSION +lib64/libIex-$MAJOR_$MINOR.so.$SOVERSION.$MAJOR.$MINOR.0 +lib64/libIex.so +lib64/libIlmThread-$MAJOR_$MINOR.so +lib64/libIlmThread-$MAJOR_$MINOR.so.$SOVERSION +lib64/libIlmThread-$MAJOR_$MINOR.so.$SOVERSION.$MAJOR.$MINOR.0 +lib64/libIlmThread.so +lib64/libOpenEXR-$MAJOR_$MINOR.so +lib64/libOpenEXR-$MAJOR_$MINOR.so.$SOVERSION +lib64/libOpenEXR-$MAJOR_$MINOR.so.$SOVERSION.$MAJOR.$MINOR.0 +lib64/libOpenEXR.so +lib64/libOpenEXRCore-$MAJOR_$MINOR.so +lib64/libOpenEXRCore-$MAJOR_$MINOR.so.$SOVERSION +lib64/libOpenEXRCore-$MAJOR_$MINOR.so.$SOVERSION.$MAJOR.$MINOR.0 +lib64/libOpenEXRCore.so +lib64/libOpenEXRUtil-$MAJOR_$MINOR.so +lib64/libOpenEXRUtil-$MAJOR_$MINOR.so.$SOVERSION +lib64/libOpenEXRUtil-$MAJOR_$MINOR.so.$SOVERSION.$MAJOR.$MINOR.0 +lib64/libOpenEXRUtil.so +lib64/pkgconfig/OpenEXR.pc +share/doc/OpenEXR/examples/deepExamples.cpp +share/doc/OpenEXR/examples/deepExamples.h +share/doc/OpenEXR/examples/deepTiledExamples.cpp +share/doc/OpenEXR/examples/deepTiledExamples.h +share/doc/OpenEXR/examples/drawImage.cpp +share/doc/OpenEXR/examples/drawImage.h +share/doc/OpenEXR/examples/generalInterfaceExamples.cpp +share/doc/OpenEXR/examples/generalInterfaceExamples.h +share/doc/OpenEXR/examples/generalInterfaceTiledExamples.cpp +share/doc/OpenEXR/examples/generalInterfaceTiledExamples.h +share/doc/OpenEXR/examples/lowLevelIoExamples.cpp +share/doc/OpenEXR/examples/lowLevelIoExamples.h +share/doc/OpenEXR/examples/main.cpp +share/doc/OpenEXR/examples/multipartExamples.cpp +share/doc/OpenEXR/examples/multipartExamples.h +share/doc/OpenEXR/examples/namespaceAlias.h +share/doc/OpenEXR/examples/previewImageExamples.cpp +share/doc/OpenEXR/examples/previewImageExamples.h +share/doc/OpenEXR/examples/rgbaInterfaceExamples.cpp +share/doc/OpenEXR/examples/rgbaInterfaceExamples.h +share/doc/OpenEXR/examples/rgbaInterfaceTiledExamples.cpp +share/doc/OpenEXR/examples/rgbaInterfaceTiledExamples.h +share/man/man1/exr2aces.1 +share/man/man1/exrcheck.1 +share/man/man1/exrenvmap.1 +share/man/man1/exrheader.1 +share/man/man1/exrinfo.1 +share/man/man1/exrmakepreview.1 +share/man/man1/exrmaketiled.1 +share/man/man1/exrmanifest.1 +share/man/man1/exrmetrics.1 +share/man/man1/exrmultipart.1 +share/man/man1/exrmultiview.1 +share/man/man1/exrstdattr.1 diff --git a/share/ci/install_manifest/install_manifest.ubuntu.7.txt b/share/ci/install_manifest/install_manifest.ubuntu.7.txt index 669a1cdaf..2f1285e00 100644 --- a/share/ci/install_manifest/install_manifest.ubuntu.7.txt +++ b/share/ci/install_manifest/install_manifest.ubuntu.7.txt @@ -1,4 +1,4 @@ -# cmake -B . -S .. -DCMAKE_INSTALL_PREFIX=../_install -DCMAKE_BUILD_TYPE=Release -DOPENEXR_CXX_STANDARD=17 -DBUILD_SHARED_LIBS=ON -DOPENEXR_ENABLE_THREADING=ON -DOPENEXR_INSTALL_PKG_CONFIG=ON -DOPENEXR_INSTALL_DOCS=ON -DOPENEXR_BUILD_EXAMPLES=ON -DOPENEXR_BUILD_TOOLS=ON -DOPENEXR_FORCE_INTERNAL_IMATH=OFF -DOPENEXR_FORCE_INTERNAL_DEFLATE=OFF -DBUILD_TESTING=ON -DOPENEXR_RUN_FUZZ_TESTS='OFF' -DCMAKE_VERBOSE_MAKEFILE='ON' +# cmake -B . -S .. -DCMAKE_INSTALL_PREFIX=../_install -DCMAKE_BUILD_TYPE=Release -DOPENEXR_CXX_STANDARD=17 -DBUILD_SHARED_LIBS=ON -DOPENEXR_ENABLE_THREADING=ON -DOPENEXR_INSTALL_PKG_CONFIG=ON -DOPENEXR_INSTALL_DOCS=ON -DOPENEXR_BUILD_EXAMPLES=ON -DOPENEXR_BUILD_TOOLS=ON -DOPENEXR_FORCE_INTERNAL_IMATH=OFF -DOPENEXR_FORCE_INTERNAL_DEFLATE=OFF -DBUILD_TESTING=ON -DOPENEXR_RUN_FUZZ_TESTS=OFF -DCMAKE_VERBOSE_MAKEFILE=ON bin/exr2aces bin/exrenvmap bin/exrheader @@ -160,25 +160,25 @@ lib64/cmake/OpenEXR/OpenEXRConfig.cmake lib64/cmake/OpenEXR/OpenEXRConfigVersion.cmake lib64/cmake/OpenEXR/OpenEXRTargets-release.cmake lib64/cmake/OpenEXR/OpenEXRTargets.cmake -lib64/libIex-$MAJOR_$MINOR.so -lib64/libIex-$MAJOR_$MINOR.so.$SOVERSION -lib64/libIex-$MAJOR_$MINOR.so.$SOVERSION.$MAJOR.$MINOR.0 +lib64/libIex-3_4.so +lib64/libIex-3_4.so.99 +lib64/libIex-3_4.so.99.3.4.0 lib64/libIex.so -lib64/libIlmThread-$MAJOR_$MINOR.so -lib64/libIlmThread-$MAJOR_$MINOR.so.$SOVERSION -lib64/libIlmThread-$MAJOR_$MINOR.so.$SOVERSION.$MAJOR.$MINOR.0 +lib64/libIlmThread-3_4.so +lib64/libIlmThread-3_4.so.99 +lib64/libIlmThread-3_4.so.99.3.4.0 lib64/libIlmThread.so -lib64/libOpenEXR-$MAJOR_$MINOR.so -lib64/libOpenEXR-$MAJOR_$MINOR.so.$SOVERSION -lib64/libOpenEXR-$MAJOR_$MINOR.so.$SOVERSION.$MAJOR.$MINOR.0 +lib64/libOpenEXR-3_4.so +lib64/libOpenEXR-3_4.so.99 +lib64/libOpenEXR-3_4.so.99.3.4.0 lib64/libOpenEXR.so -lib64/libOpenEXRCore-$MAJOR_$MINOR.so -lib64/libOpenEXRCore-$MAJOR_$MINOR.so.$SOVERSION -lib64/libOpenEXRCore-$MAJOR_$MINOR.so.$SOVERSION.$MAJOR.$MINOR.0 +lib64/libOpenEXRCore-3_4.so +lib64/libOpenEXRCore-3_4.so.99 +lib64/libOpenEXRCore-3_4.so.99.3.4.0 lib64/libOpenEXRCore.so -lib64/libOpenEXRUtil-$MAJOR_$MINOR.so -lib64/libOpenEXRUtil-$MAJOR_$MINOR.so.$SOVERSION -lib64/libOpenEXRUtil-$MAJOR_$MINOR.so.$SOVERSION.$MAJOR.$MINOR.0 +lib64/libOpenEXRUtil-3_4.so +lib64/libOpenEXRUtil-3_4.so.99 +lib64/libOpenEXRUtil-3_4.so.99.3.4.0 lib64/libOpenEXRUtil.so lib64/pkgconfig/OpenEXR.pc share/doc/OpenEXR/examples/deepExamples.cpp