Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9984e93000 | ||
|
|
1738e0a6a5 | ||
|
|
904e8dfc37 | ||
|
|
f58124dd60 | ||
|
|
21e10fb2c0 | ||
|
|
4836a21950 | ||
|
|
84cd074604 | ||
|
|
1f05697cbd | ||
|
|
2031172953 | ||
|
|
88249cf59a | ||
|
|
cd1ffe5abf | ||
|
|
6cbd1e8fa2 | ||
|
|
e015ae4293 | ||
|
|
672ed4c445 | ||
|
|
c90efcf167 | ||
|
|
65e3838985 | ||
|
|
6d2b4194e7 | ||
|
|
99e4bc86ac | ||
|
|
59953474b2 | ||
|
|
40cff8d4a5 | ||
|
|
4d7fed6984 | ||
|
|
9757e20694 | ||
|
|
0881ebdedb | ||
|
|
20756dad13 | ||
|
|
39f2022aca | ||
|
|
ec4ead0cbb | ||
|
|
77c2a8b217 | ||
|
|
c9d75870c6 | ||
|
|
b32e546d16 | ||
|
|
c1f43ae796 | ||
|
|
f8f342f08a | ||
|
|
5ca4b06516 | ||
|
|
23751c1bf1 | ||
|
|
110ed69660 | ||
|
|
3ab3231304 | ||
|
|
99542f910d | ||
|
|
a21aa460ff | ||
|
|
95177f11a6 | ||
|
|
ab08205f6a | ||
|
|
d6c151efba | ||
|
|
50d51f58d7 | ||
|
|
91341990f6 | ||
|
|
7b3d368a87 | ||
|
|
d308780e12 | ||
|
|
8e8dab1215 | ||
|
|
dfa76c7a5e | ||
|
|
b86d8ad011 | ||
|
|
9bcd4e7a1f | ||
|
|
f11dbfc40d | ||
|
|
84f8acdc56 | ||
|
|
c79e11bfcf | ||
|
|
44ab7f4192 | ||
|
|
55f97a43b7 | ||
|
|
5b2d2066e6 | ||
|
|
bd588e5ca8 | ||
|
|
c7ff69ff59 | ||
|
|
e97403c7ba | ||
|
|
8add832fa8 | ||
|
|
749a557b5e | ||
|
|
c095abae93 | ||
|
|
e43cbe830c | ||
|
|
98ff1e57ae | ||
|
|
503fb7a511 | ||
|
|
a7ff737902 | ||
|
|
1cd944338c | ||
|
|
5cb94101ba | ||
|
|
e7fe406481 | ||
|
|
73fdd4281a | ||
|
|
0c48ae1ae3 | ||
|
|
0e9406e17a | ||
|
|
73d99b9733 | ||
|
|
e28cffbf2a | ||
|
|
5ff2c56dd2 | ||
|
|
2d0e89bdab | ||
|
|
1ebe68ca90 | ||
|
|
405909bf70 | ||
|
|
aead17571b | ||
|
|
61d234347c | ||
|
|
adf95f683a | ||
|
|
5b59ff65e3 | ||
|
|
e29c89b136 | ||
|
|
fa5dd1b222 | ||
|
|
c903169614 | ||
|
|
56449a9d72 | ||
|
|
d84fef0922 | ||
|
|
41ced5bf5b | ||
|
|
c7e37e5c5c | ||
|
|
561b1ed0f9 | ||
|
|
3c8ce0ed00 | ||
|
|
2e835bacdf | ||
|
|
4646313d35 | ||
|
|
31bc1e6432 | ||
|
|
534e47eef2 | ||
|
|
8ec4a8dca3 | ||
|
|
5187a52dab | ||
|
|
65806259dd | ||
|
|
f660d2d7fe | ||
|
|
0b131b231b | ||
|
|
448d05d51f | ||
|
|
c8559ea177 | ||
|
|
5e386bc330 | ||
|
|
9d933a75d1 | ||
|
|
d3c6fd2e4d | ||
|
|
12931a4891 | ||
|
|
2f92fcb894 | ||
|
|
7fa327a634 | ||
|
|
9934ab38a9 | ||
|
|
3a0d7d068f | ||
|
|
8a0ac72b0f | ||
|
|
bc75a81fcf | ||
|
|
246ee42759 | ||
|
|
7abc4faf89 | ||
|
|
3954b098b4 | ||
|
|
e191d3b9eb | ||
|
|
b4b4dcd6e3 | ||
|
|
92a34f8596 | ||
|
|
c145b80833 | ||
|
|
f4b38d9c30 | ||
|
|
a39692256b | ||
|
|
6a7e404804 | ||
|
|
f222d05930 | ||
|
|
209bb4c327 | ||
|
|
bd319821e8 | ||
|
|
0ad9b297d8 | ||
|
|
1a72ae7c31 | ||
|
|
4991ac482e | ||
|
|
069a1877af | ||
|
|
bed036cfd6 | ||
|
|
cf8d6bf5cd | ||
|
|
8bb093b162 | ||
|
|
d648187d04 | ||
|
|
0665bffad3 | ||
|
|
fdbf190e2b | ||
|
|
3edc96fdea | ||
|
|
2b663e0061 | ||
|
|
161b2a4c12 | ||
|
|
9d514db8c6 | ||
|
|
ad34901684 | ||
|
|
cba5c59fe9 | ||
|
|
17daba2ec0 | ||
|
|
0433073464 | ||
|
|
52e5d89129 | ||
|
|
7086a599fa | ||
|
|
fae8da1a9f | ||
|
|
76609e0a8c | ||
|
|
400fb3dbd4 | ||
|
|
e82040a939 | ||
|
|
628726e46a | ||
|
|
58e090e329 | ||
|
|
ab8027fc42 | ||
|
|
417155cc18 | ||
|
|
18caee105a | ||
|
|
b178a54ee3 | ||
|
|
91c3a7c4c4 | ||
|
|
5590f2403b | ||
|
|
6f684e6261 | ||
|
|
0cafbcd471 | ||
|
|
3fdee625f4 | ||
|
|
9e94856ff2 | ||
|
|
24f253cce3 | ||
|
|
fcc6cfdf9b | ||
|
|
e9cfbfbce8 | ||
|
|
be1fd307c2 | ||
|
|
bf4e5a869e | ||
|
|
065d36c756 | ||
|
|
c8d49a4358 | ||
|
|
39120c722d | ||
|
|
fc2c2615d9 | ||
|
|
4c1bdcc752 | ||
|
|
af3b98c344 | ||
|
|
6ec28a05d3 | ||
|
|
7c4253d9fc | ||
|
|
7d73c62e8b | ||
|
|
2a4a1505e4 | ||
|
|
80ef5cd65e | ||
|
|
6617e8c865 | ||
|
|
0ba31990fc | ||
|
|
5fd50a69be | ||
|
|
fddc816e80 | ||
|
|
f15d4f4f2d | ||
|
|
d737268c82 | ||
|
|
847481997d | ||
|
|
b06d2aae8a | ||
|
|
f86e0999e6 | ||
|
|
745a071080 | ||
|
|
df783ef8b9 | ||
|
|
190e8f3fef | ||
|
|
0df4bbd478 | ||
|
|
f7c0402f7d | ||
|
|
e210d934a9 | ||
|
|
bf85b2eda8 | ||
|
|
99f17b8349 | ||
|
|
c18b3ef72c | ||
|
|
3a71e8a162 | ||
|
|
1413022687 | ||
|
|
7b2f76dc7c | ||
|
|
e66ff05314 | ||
|
|
5d23f2d69f | ||
|
|
344f816b2d | ||
|
|
45592eaeab | ||
|
|
5d9ff6294a | ||
|
|
13ed669ae5 | ||
|
|
efffa5f24d | ||
|
|
811a321f74 | ||
|
|
d08ca20fe1 | ||
|
|
14748d5aa1 | ||
|
|
8bcc715235 | ||
|
|
ba3f204158 | ||
|
|
43f806d53c | ||
|
|
30571a094c | ||
|
|
8f9bf9973b | ||
|
|
750f89cd7f | ||
|
|
34ea2fb548 | ||
|
|
62ff91df5c | ||
|
|
14b6c11847 | ||
|
|
c794d877e3 | ||
|
|
9e987d5e5e | ||
|
|
e5bffd8a84 | ||
|
|
6aab6975f5 | ||
|
|
c7c2830b45 | ||
|
|
e6b52502ad | ||
|
|
1e70f7862c | ||
|
|
5563449f01 | ||
|
|
5bfe48a16d | ||
|
|
79824feaa4 | ||
|
|
1a53aa4ade | ||
|
|
85eae966f8 | ||
|
|
feb2c9c46f | ||
|
|
3361e8d89b | ||
|
|
b288f3ada9 | ||
|
|
b971489267 | ||
|
|
2b542b92c6 | ||
|
|
2735f38b42 | ||
|
|
37bb86d116 | ||
|
|
8701cf7dd0 | ||
|
|
cc933a0ff7 | ||
|
|
65c61ca759 | ||
|
|
3faa66b592 | ||
|
|
09bba709c5 | ||
|
|
9379097d7c | ||
|
|
58a51a3705 | ||
|
|
ab887c5c76 | ||
|
|
521a6ba64c | ||
|
|
6e39b13e78 | ||
|
|
69917346c5 | ||
|
|
9d2f6717fa | ||
|
|
b1513e8c43 | ||
|
|
fc94095738 | ||
|
|
54224dce05 | ||
|
|
5e15e1cb3b | ||
|
|
1fdfff056b | ||
|
|
c1d44d5d5b | ||
|
|
7154cc5949 | ||
|
|
0195106930 | ||
|
|
c6cb668b88 | ||
|
|
ecab9e2080 | ||
|
|
9d8aa265b3 | ||
|
|
f3f375fc5b | ||
|
|
34b643922a | ||
|
|
705c25c193 | ||
|
|
5e8483b758 | ||
|
|
7f02d29935 | ||
|
|
69c40cf320 | ||
|
|
c6a9c08bc7 | ||
|
|
427406d084 | ||
|
|
fde8de5602 | ||
|
|
8fe2463d30 | ||
|
|
cddf3e175b | ||
|
|
aff5ea242f | ||
|
|
8a5580c59e | ||
|
|
f54a109ffb | ||
|
|
922ec699a1 | ||
|
|
f2a2d59344 | ||
|
|
8fbf27b69d | ||
|
|
98181a584e | ||
|
|
1983be7f16 | ||
|
|
5dfe62d56d | ||
|
|
78cca33201 | ||
|
|
8f7c48dec3 | ||
|
|
e7769b6b0d | ||
|
|
8c8c918e5c | ||
|
|
fafbec1737 | ||
|
|
4327cd8560 | ||
|
|
6ca23b7753 | ||
|
|
aa0550e07f | ||
|
|
a10a88fa12 | ||
|
|
dab1663d6d | ||
|
|
c0e7eb56d7 | ||
|
|
d02ad116b4 | ||
|
|
ab7dc1f728 | ||
|
|
31dbd3d699 | ||
|
|
d83aee94d5 | ||
|
|
7c167dab0a | ||
|
|
fe98cbfb9a | ||
|
|
6445022f11 | ||
|
|
ade4132ada | ||
|
|
c5d17a32c5 | ||
|
|
9900536fce | ||
|
|
8c40efdcc5 | ||
|
|
449e1c7ea6 | ||
|
|
0a28dc0186 |
@@ -7,10 +7,10 @@ assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**PLEASE DO NOT REPORT BUILD TROUBLES AS ISSUES**
|
||||
**PLEASE DO NOT REPORT BUILD TROUBLES AS GITHUB "ISSUES" UNLESS YOU ARE RALLY SURE IT'S A BUG**
|
||||
|
||||
The best way to get help with your build problems is to ask a question on the
|
||||
[oiio-dev developer mail list](http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org).
|
||||
[oiio-dev developer mail list](https://lists.aswf.io/g/oiio-dev).
|
||||
|
||||
When you email about this, please attach one or both of the following:
|
||||
1. The full verbose build log, which you can create like this:
|
||||
|
||||
@@ -19,7 +19,7 @@ But if you are just asking a question:
|
||||
* I can't build OpenImageIO
|
||||
|
||||
For anything of this nature, the best way to get help using OpenImageIO is
|
||||
to ask a question on the [oiio-dev developer mail list](http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org).
|
||||
to ask a question on the [oiio-dev developer mail list](https://lists.aswf.io/g/oiio-dev).
|
||||
|
||||
The [documentation](https://openimageio.readthedocs.org)
|
||||
is pretty comprehensive, so please check there first; you may find the answer
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
<!-- This is just a guideline and set of reminders about what constitutes -->
|
||||
<!-- a good PR. Feel free to delete all this matter and replace it with -->
|
||||
<!-- your own detailed message about the PR, assuming you hit all the -->
|
||||
<!-- important points made below. -->
|
||||
|
||||
|
||||
## Description
|
||||
|
||||
@@ -15,13 +20,13 @@
|
||||
<!-- Put an 'x' in the boxes as you complete the checklist items -->
|
||||
|
||||
- [ ] I have read the [contribution guidelines](https://github.com/OpenImageIO/oiio/blob/master/CONTRIBUTING.md).
|
||||
- [ ] If this is more extensive than a small change to existing code, I
|
||||
have previously submitted a Contributor License Agreement
|
||||
([individual](https://github.com/OpenImageIO/oiio/blob/master/src/doc/CLA-INDIVIDUAL), and if there is any way my
|
||||
employers might think my programming belongs to them, then also
|
||||
[corporate](https://github.com/OpenImageIO/oiio/blob/master/src/doc/CLA-CORPORATE)).
|
||||
- [ ] I have updated the documentation, if applicable.
|
||||
- [ ] I have ensured that the change is tested somewhere in the testsuite
|
||||
(adding new test cases if necessary).
|
||||
- [ ] My code follows the prevailing code style of this project.
|
||||
|
||||
- [ ] If I added or modified a C++ API call, I have also amended the
|
||||
corresponding Python bindings (and if altering ImageBufAlgo functions, also
|
||||
exposed the new functionality as oiiotool options).
|
||||
- [ ] My code follows the prevailing code style of this project. If I haven't
|
||||
already run clang-format before submitting, I definitely will look at the CI
|
||||
test that runs clang-format and fix anything that it highlights as being
|
||||
nonconforming.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright 2008-present Contributors to the OpenImageIO project.
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
@@ -11,21 +11,31 @@ on:
|
||||
# Run unconditionally once weekly
|
||||
# - cron: "0 0 * * 0"
|
||||
push:
|
||||
# Run on pushes only to master or if the branch name contains "analysis"
|
||||
branches:
|
||||
- master
|
||||
- '*analysis*'
|
||||
- '*sonar*'
|
||||
# Allow manual kicking off of the workflow from github.com
|
||||
workflow_dispatch:
|
||||
# Uncomment the following line if we want to run analysis on all PRs:
|
||||
# pull_request:
|
||||
|
||||
permissions: read-all
|
||||
|
||||
# Allow subsequent pushes to the same PR or REF to cancel any previous jobs.
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
|
||||
jobs:
|
||||
|
||||
aswf:
|
||||
name: "SonarCloud Analysis"
|
||||
if: |
|
||||
github.repository == 'OpenImageIO/oiio'
|
||||
# Exclude runs on forks, since only the main org has the SonarCloud
|
||||
# account credentials.
|
||||
if: github.repository == 'OpenImageIO/oiio'
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
@@ -50,6 +60,8 @@ jobs:
|
||||
CMAKE_BUILD_TYPE=Debug
|
||||
CMAKE_UNITY_BUILD=OFF
|
||||
CODECOV=1
|
||||
CTEST_TEST_TIMEOUT=1200
|
||||
OIIO_CMAKE_FLAGS="-DOIIO_TEX_IMPLEMENT_VARYINGREF=OFF"
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
container:
|
||||
|
||||
+85
-57
@@ -1,4 +1,4 @@
|
||||
# Copyright 2008-present Contributors to the OpenImageIO project.
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
@@ -17,6 +17,7 @@ on:
|
||||
schedule:
|
||||
# Full nightly build
|
||||
- cron: "0 8 * * *"
|
||||
if: github.repository == 'OpenImageIO/oiio'
|
||||
|
||||
permissions: read-all
|
||||
|
||||
@@ -32,6 +33,7 @@ jobs:
|
||||
- desc: gcc6/C++14 py2.7 boost1.66 exr2.3 ocio1.1
|
||||
nametag: linux-vfx2019
|
||||
os: ubuntu-latest
|
||||
container: aswf/ci-osl:2019
|
||||
vfxyear: 2019
|
||||
cxx_std: 14
|
||||
python_ver: 2.7
|
||||
@@ -42,6 +44,7 @@ jobs:
|
||||
- desc: gcc6/C++14 py3.7 boost1.70 exr2.4 ocio1.1
|
||||
nametag: linux-vfx2020
|
||||
os: ubuntu-latest
|
||||
container: aswf/ci-osl:2020
|
||||
vfxyear: 2020
|
||||
cxx_std: 14
|
||||
python_ver: 3.7
|
||||
@@ -52,6 +55,7 @@ jobs:
|
||||
- desc: gcc9/C++17 py3.7 boost1.73 exr2.5 ocio2.0
|
||||
nametag: linux-vfx2021
|
||||
os: ubuntu-latest
|
||||
container: aswf/ci-osl:2021
|
||||
vfxyear: 2021
|
||||
cxx_std: 17
|
||||
python_ver: 3.7
|
||||
@@ -62,8 +66,8 @@ jobs:
|
||||
- desc: clang10/C++14 avx2 exr2.5 ocio2.0
|
||||
nametag: linux-clang10-cpp14
|
||||
os: ubuntu-latest
|
||||
container: aswf/ci-osl:2021-clang10
|
||||
vfxyear: 2021
|
||||
vfxsuffix: -clang10
|
||||
cc_compiler: clang
|
||||
cxx_compiler: clang++
|
||||
cxx_std: 14
|
||||
@@ -74,18 +78,18 @@ jobs:
|
||||
- desc: gcc9/C++17 py39 boost1.76 exr3.1 ocio2.1
|
||||
nametag: linux-vfx2022
|
||||
os: ubuntu-latest
|
||||
container: aswf/ci-osl:2022-clang11
|
||||
vfxyear: 2022
|
||||
vfxsuffix: -clang11
|
||||
cxx_std: 17
|
||||
python_ver: 3.9
|
||||
simd: "avx2,f16c"
|
||||
fmt_ver: 8.1.1
|
||||
pybind11_ver: v2.9.0
|
||||
- desc: clang13/C++17 py39 avx2 exr3.1 ocio2.1
|
||||
nametag: linux-clang13-cpp17
|
||||
nametag: linux-vfx2022-clang13
|
||||
os: ubuntu-latest
|
||||
container: aswf/ci-osl:2022-clang13
|
||||
vfxyear: 2022
|
||||
vfxsuffix: -clang13
|
||||
cc_compiler: clang
|
||||
cxx_compiler: clang++
|
||||
cxx_std: 17
|
||||
@@ -96,6 +100,7 @@ jobs:
|
||||
- desc: icc/C++17 py3.9 boost1.76 exr3.1 ocio2.1 qt5.15
|
||||
nametag: linux-vfx2022-icc
|
||||
os: ubuntu-latest
|
||||
container: aswf/ci-osl:2022
|
||||
vfxyear: 2022
|
||||
cxx_std: 17
|
||||
python_ver: 3.9
|
||||
@@ -110,6 +115,7 @@ jobs:
|
||||
- desc: icx/C++17 py3.9 boost1.76 exr3.1 ocio2.1 qt5.15
|
||||
nametag: linux-vfx2022-icx
|
||||
os: ubuntu-latest
|
||||
container: aswf/ci-osl:2022
|
||||
vfxyear: 2022
|
||||
cc_compiler: icx
|
||||
cxx_compiler: icpx
|
||||
@@ -121,15 +127,33 @@ jobs:
|
||||
- desc: sanitizers
|
||||
nametag: sanitizer
|
||||
os: ubuntu-latest
|
||||
container: aswf/ci-osl:2022-clang13
|
||||
vfxyear: 2022
|
||||
cc_compiler: clang
|
||||
cxx_compiler: clang++
|
||||
cxx_std: 17
|
||||
python_ver: 3.9
|
||||
setenvs: export SANITIZE=address USE_PYTHON=0
|
||||
setenvs: export SANITIZE=address,undefined
|
||||
OIIO_CMAKE_FLAGS="-DSANITIZE=address,undefined -DUSE_PYTHON=0"
|
||||
CMAKE_BUILD_TYPE=Debug
|
||||
CTEST_TEST_TIMEOUT=1200
|
||||
CTEST_EXCLUSIONS="broken|cmake-consumer|png-damaged"
|
||||
- desc: gcc11/C++17 py3.10 boost1.80 exr3.1 ocio2.2
|
||||
nametag: linux-vfx2023
|
||||
os: ubuntu-latest
|
||||
container: aswftesting/ci-osl:2023-clang15
|
||||
vfxyear: 2023
|
||||
cxx_std: 17
|
||||
python_ver: "3.10"
|
||||
simd: "avx2,f16c"
|
||||
fmt_ver: 9.1.0
|
||||
pybind11_ver: v2.10.0
|
||||
- desc: oldest/hobbled gcc6.3/C++14 py2.7 boost-1.66 exr-2.3 no-sse no-ocio
|
||||
# Oldest versions of the dependencies that we can muster, and various
|
||||
# things disabled (no SSE, OCIO, or OpenCV, don't embed plugins).
|
||||
nametag: linux-oldest
|
||||
os: ubuntu-latest
|
||||
container: aswf/ci-osl:2019
|
||||
vfxyear: 2019
|
||||
cxx_std: 14
|
||||
fmt_ver: 6.1.2
|
||||
@@ -145,9 +169,24 @@ jobs:
|
||||
WEBP_VERSION=v1.0.0
|
||||
depcmds: sudo rm -rf /usr/local/include/OpenEXR
|
||||
|
||||
# Test formatting. This test entry doesn't do a full build, it
|
||||
# just runs clang-format on everything, and passes if nothing is
|
||||
# misformatted. Upon failure, the build artifact will be the full
|
||||
# source code with the formatting fixed (diffs will also appear in
|
||||
# the console output).
|
||||
- desc: "clang-format"
|
||||
nametag: clang-format
|
||||
os: ubuntu-latest
|
||||
container: aswf/ci-osl:2022-clang12
|
||||
vfxyear: 2022
|
||||
cxx_std: 17
|
||||
skip_tests: 1
|
||||
setenvs: export BUILDTARGET=clang-format
|
||||
OIIO_CMAKE_FLAGS=-DUSE_PYTHON=0
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
container:
|
||||
image: aswf/ci-osl:${{matrix.vfxyear}}${{matrix.vfxsuffix}}
|
||||
image: ${{ matrix.container }}
|
||||
env:
|
||||
CXX: ${{matrix.cxx_compiler}}
|
||||
CC: ${{matrix.cc_compiler}}
|
||||
@@ -157,7 +196,6 @@ jobs:
|
||||
OPENEXR_VERSION: ${{matrix.openexr_ver}}
|
||||
PYBIND11_VERSION: ${{matrix.pybind11_ver}}
|
||||
PYTHON_VERSION: ${{matrix.python_ver}}
|
||||
DEBUG_CI: 1
|
||||
steps:
|
||||
# We would like to use harden-runner, but it flags too many false
|
||||
# positives, every time we download a dependency. We should use it only
|
||||
@@ -209,26 +247,26 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- desc: latest releases gcc11 C++17 avx2 exr3.1 ocio2.1
|
||||
- desc: latest releases gcc11 C++17 avx2 exr3.2 ocio2.3
|
||||
nametag: linux-latest-releases
|
||||
os: ubuntu-20.04
|
||||
os: ubuntu-22.04
|
||||
cc_compiler: gcc-11
|
||||
cxx_compiler: g++-11
|
||||
cxx_std: 17
|
||||
fmt_ver: 9.1.0
|
||||
openexr_ver: v3.1.5
|
||||
pybind11_ver: v2.10.0
|
||||
python_ver: 3.8
|
||||
openexr_ver: v3.2.0
|
||||
pybind11_ver: v2.11.1
|
||||
python_ver: "3.10"
|
||||
simd: avx2,f16c
|
||||
setenvs: export LIBRAW_VERSION=0.20.2
|
||||
LIBTIFF_VERSION=v4.4.0
|
||||
OPENCOLORIO_VERSION=v2.1.2
|
||||
LIBTIFF_VERSION=v4.5.0
|
||||
OPENCOLORIO_VERSION=v2.3.0
|
||||
OPENIMAGEIO_OPTIONS="openexr:core=1"
|
||||
OPENJPEG_VERSION=v2.4.0
|
||||
PTEX_VERSION=v2.4.0
|
||||
PUGIXML_VERSION=v1.12.1
|
||||
PUGIXML_VERSION=v1.13
|
||||
USE_OPENVDB=0
|
||||
WEBP_VERSION=v1.2.1
|
||||
WEBP_VERSION=v1.3.0
|
||||
# The installed OpenVDB has a TLS conflict with Python 3.8
|
||||
- desc: bleeding edge gcc12 C++20 py3.10 OCIO/libtiff/exr-master boost1.74 avx2
|
||||
nametag: linux-bleeding-edge
|
||||
@@ -236,7 +274,7 @@ jobs:
|
||||
cc_compiler: gcc-12
|
||||
cxx_compiler: g++-12
|
||||
cxx_std: 20
|
||||
fmt_ver: master
|
||||
fmt_ver: 10.0.0
|
||||
openexr_ver: main
|
||||
pybind11_ver: master
|
||||
python_ver: "3.10"
|
||||
@@ -249,7 +287,8 @@ jobs:
|
||||
PTEX_VERSION=main
|
||||
PUGIXML_VERSION=master
|
||||
USE_OPENVDB=0
|
||||
WEBP_VERSION=master
|
||||
WEBP_VERSION=main
|
||||
OIIO_CMAKE_FLAGS="-DFORTIFY_SOURCE=2"
|
||||
# The installed OpenVDB has a TLS conflict with Python 3.8
|
||||
- desc: clang14 C++20 avx2 exr3.1 ocio2.1
|
||||
nametag: linux-clang14
|
||||
@@ -269,17 +308,24 @@ jobs:
|
||||
# The installed OpenVDB has a TLS conflict with Python 3.8
|
||||
- desc: debug gcc7/C++14, sse4.2, exr2.4
|
||||
nametag: linux-gcc7-cpp14-debug
|
||||
os: ubuntu-18.04
|
||||
os: ubuntu-20.04
|
||||
container:
|
||||
image: ubuntu-18.04
|
||||
cxx_compiler: g++-7
|
||||
cxx_std: 14
|
||||
python_ver: 2.7
|
||||
simd: sse4.2
|
||||
openexr_ver: v2.4.3
|
||||
pybind11_ver: v2.6.2
|
||||
setenvs: export CMAKE_BUILD_TYPE=Debug PUGIXML_VERSION=v1.9
|
||||
setenvs: export CMAKE_BUILD_TYPE=Debug
|
||||
PUGIXML_VERSION=v1.9
|
||||
CTEST_TEST_TIMEOUT=1200
|
||||
|
||||
- desc: gcc8 C++17 avx exr2.5
|
||||
nametag: linux-gcc8
|
||||
os: ubuntu-18.04
|
||||
os: ubuntu-20.04
|
||||
container:
|
||||
image: ubuntu-18.04
|
||||
cc_compiler: gcc-8
|
||||
cxx_compiler: g++-8
|
||||
cxx_std: 17
|
||||
@@ -288,7 +334,9 @@ jobs:
|
||||
simd: avx
|
||||
- desc: static libs gcc7 C++14 exr2.4
|
||||
nametag: linux-static
|
||||
os: ubuntu-18.04
|
||||
os: ubuntu-20.04
|
||||
container:
|
||||
image: ubuntu-18.04
|
||||
cxx_compiler: g++-7
|
||||
cxx_std: 14
|
||||
openexr_ver: v2.4.3
|
||||
@@ -308,7 +356,6 @@ jobs:
|
||||
OPENEXR_VERSION: ${{matrix.openexr_ver}}
|
||||
PYBIND11_VERSION: ${{matrix.pybind11_ver}}
|
||||
PYTHON_VERSION: ${{matrix.python_ver}}
|
||||
DEBUG_CI: 1
|
||||
steps:
|
||||
# We would like to use harden-runner, but it flags too many false
|
||||
# positives, every time we download a dependency. We should use it only
|
||||
@@ -362,15 +409,25 @@ jobs:
|
||||
include:
|
||||
- desc: MacOS-11
|
||||
os: macos-11
|
||||
nametag: macos11-py39
|
||||
cxx_std: 17
|
||||
python_ver: "3.9"
|
||||
aclang: 13
|
||||
setenvs: export QT_VERSION=@5
|
||||
- desc: MacOS-12
|
||||
os: macos-12
|
||||
nametag: macos12-py310
|
||||
cxx_std: 20
|
||||
python_ver: "3.10"
|
||||
aclang: 13
|
||||
setenvs: export CTEST_TEST_TIMEOUT=300
|
||||
setenvs: export CTEST_TEST_TIMEOUT=600
|
||||
- desc: MacOS-13
|
||||
os: macos-13
|
||||
nametag: macos13-py311
|
||||
cxx_std: 20
|
||||
python_ver: "3.11"
|
||||
aclang: 14
|
||||
setenvs: export CTEST_TEST_TIMEOUT=600
|
||||
runs-on: ${{ matrix.os }}
|
||||
env:
|
||||
CC: clang
|
||||
@@ -387,7 +444,7 @@ jobs:
|
||||
uses: actions/cache@c3f1317a9e7b1ef106c153ac8c0f00fed3ddbc0d # v3.0.4
|
||||
with:
|
||||
path: /Users/runner/.ccache
|
||||
key: ${{github.job}}-${{matrix.os}}-${{steps.ccache_cache_keys.outputs.date}}
|
||||
key: ${{github.job}}-${{matrix.nametag}}-${{ steps.ccache_cache_keys.outputs.date }}
|
||||
restore-keys: ${{github.job}}-
|
||||
- name: Build setup
|
||||
run: |
|
||||
@@ -406,7 +463,7 @@ jobs:
|
||||
- uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0
|
||||
if: failure()
|
||||
with:
|
||||
name: oiio-${{github.job}}
|
||||
name: oiio-${{github.job}}-${{matrix.nametag}}
|
||||
path: |
|
||||
build/cmake-save
|
||||
build/testsuite/*/*.*
|
||||
@@ -443,7 +500,7 @@ jobs:
|
||||
CMAKE_GENERATOR: ${{matrix.generator}}
|
||||
OPENEXR_VERSION: ${{matrix.openexr_ver}}
|
||||
USE_SIMD: ${{matrix.simd}}
|
||||
CTEST_ARGS: "--timeout 120 --repeat after-timeout:6"
|
||||
CTEST_ARGS: "--timeout 180 --repeat after-timeout:6"
|
||||
steps:
|
||||
- uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3.0.2
|
||||
- name: Setup Nuget.exe
|
||||
@@ -473,32 +530,3 @@ jobs:
|
||||
!build/testsuite/openexr-images
|
||||
!build/testsuite/fits-images
|
||||
!build/testsuite/j2kp4files_v1_5
|
||||
|
||||
|
||||
clang-format:
|
||||
# Test formatting. This test entry doesn't do a full build, it just runs
|
||||
# clang-format on everything, and passes if nothing is misformatted.
|
||||
# Upon failure, the build artifact will be the full source code with the
|
||||
# formatting fixed (diffs will also appear in the console output).
|
||||
name: "clang-format verification"
|
||||
runs-on: ubuntu-20.04
|
||||
container:
|
||||
image: aswf/ci-osl:2022-clang12
|
||||
env:
|
||||
BUILDTARGET: clang-format
|
||||
PYTHON_VERSION: 3.9
|
||||
steps:
|
||||
- uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3.0.2
|
||||
- name: Build setup
|
||||
run: src/build-scripts/ci-startup.bash
|
||||
- name: Dependencies
|
||||
run: src/build-scripts/gh-installdeps.bash
|
||||
- name: Build
|
||||
run: src/build-scripts/ci-build.bash
|
||||
- uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0
|
||||
if: failure()
|
||||
with:
|
||||
name: ${{ github.job }}
|
||||
path: |
|
||||
src/*/*.cpp
|
||||
src/*/*.h
|
||||
|
||||
@@ -3,21 +3,27 @@ on:
|
||||
# Only the default branch is supported.
|
||||
branch_protection_rule:
|
||||
push:
|
||||
# Run on pushes to master, but only the main repo, not forks
|
||||
branches: [ "master" ]
|
||||
if: github.event.pull_request.head.repo.full_name == github.repository
|
||||
pull_request:
|
||||
# Only run on individual PRs if the workflow file itself is changed.
|
||||
paths:
|
||||
- .github/workflows/scorecard.yml
|
||||
schedule:
|
||||
# Run unconditionally once weekly
|
||||
- cron: "0 0 * * 0"
|
||||
|
||||
# Declare default permissions as read only.
|
||||
permissions: read-all
|
||||
|
||||
# Allow subsequent pushes to the same PR or REF to cancel any previous jobs.
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
|
||||
jobs:
|
||||
analysis:
|
||||
name: Scorecards analysis
|
||||
if: github.repository == 'OpenImageIO/oiio'
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
# Needed to upload the results to code-scanning dashboard.
|
||||
|
||||
@@ -10,6 +10,7 @@ ext/
|
||||
.project
|
||||
.DS_Store
|
||||
*.pyc
|
||||
_coverage/
|
||||
|
||||
# Exclude test files I tend to leave around at the top level. The leading
|
||||
# slash ensures that files with these extensions within subdirectories are not
|
||||
|
||||
@@ -0,0 +1,149 @@
|
||||
Project Name: OpenImageIO
|
||||
|
||||
Project Entity: OpenImageIO Project a Series of LF Projects, LLC
|
||||
|
||||
If emailing signed PDF, send to: manager@lfprojects.org
|
||||
|
||||
**Software Grant and Corporate Contributor License Agreement ("Agreement") v2.1**
|
||||
|
||||
Thank you for your interest in the project specified above (the “Project”). In
|
||||
order to clarify the intellectual property license granted with Contributions
|
||||
from any person or entity, the Project must have a Contributor License Agreement
|
||||
(CLA) on file that has been signed by each Contributor, indicating agreement to
|
||||
the license terms below. This license is for your protection as a Contributor as
|
||||
well as the protection of the Project and its users; it does not change your
|
||||
rights to use your own Contributions for any other purpose.
|
||||
|
||||
This version of the Agreement allows an entity (the “Corporation”) to submit
|
||||
Contributions to the Project, to authorize Contributions submitted by its
|
||||
designated employees to the Project, and to grant copyright and patent licenses
|
||||
thereto.
|
||||
|
||||
If you have not already done so, please complete and sign this Agreement using
|
||||
the electronic signature portal made available to you by the Project or its
|
||||
third-party service providers, or email a PDF of the signed agreement to the
|
||||
email address specified above. Please read this document carefully before
|
||||
signing and keep a copy for your records.
|
||||
|
||||
You accept and agree to the following terms and conditions for Your present and
|
||||
future Contributions submitted to the Project. In return, the Project shall not
|
||||
use Your Contributions in a way that is contrary to the public benefit or
|
||||
inconsistent with its charter at the time of the Contribution. Except for the
|
||||
license granted herein to the Project and recipients of software distributed by
|
||||
the Project, You reserve all right, title, and interest in and to Your
|
||||
Contributions.
|
||||
|
||||
1. Definitions.
|
||||
|
||||
“You” (or “Your”) shall mean the copyright owner or legal entity authorized by
|
||||
the copyright owner that is making this Agreement with the Project. For legal
|
||||
entities, the entity making a Contribution and all other entities that
|
||||
control, are controlled by, or are under common control with that entity are
|
||||
considered to be a single Contributor. For the purposes of this definition,
|
||||
“control” means (i) the power, direct or indirect, to cause the direction or
|
||||
management of such entity, whether by contract or otherwise, or (ii) ownership
|
||||
of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial
|
||||
ownership of such entity.
|
||||
|
||||
“Contribution” shall mean the code, documentation or other original works of
|
||||
authorship, including any modifications or additions to an existing work, that
|
||||
is intentionally submitted by You to the Project for inclusion in, or
|
||||
documentation of, any of the products owned or managed by the Project (the
|
||||
“Work”). For the purposes of this definition, “submitted” means any form
|
||||
of electronic, verbal, or written communication sent to the Project or its
|
||||
representatives, including but not limited to communication on electronic
|
||||
mailing lists, source code control systems, and issue tracking systems that
|
||||
are managed by, or on behalf of, the Project for the purpose of discussing and
|
||||
improving the Work, but excluding communication that is conspicuously marked
|
||||
or otherwise designated in writing by You as “Not a Contribution.”
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of this
|
||||
Agreement, You hereby grant to the Project and to recipients of software
|
||||
distributed by the Project a perpetual, worldwide, non-exclusive, no-charge,
|
||||
royalty-free, irrevocable copyright license to reproduce, prepare
|
||||
derivative works of, publicly display, publicly perform, sublicense,
|
||||
and distribute Your Contributions and such derivative works.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of this
|
||||
Agreement, You hereby grant to the Project and to recipients of software
|
||||
distributed by the Project a perpetual, worldwide, non-exclusive, no-charge,
|
||||
royalty-free, irrevocable (except as stated in this section) patent
|
||||
license to make, have made, use, offer to sell, sell, import, and
|
||||
otherwise transfer the Work, where such license applies only to
|
||||
those patent claims licensable by You that are necessarily infringed
|
||||
by Your Contribution(s) alone or by combination of Your
|
||||
Contribution(s) with the Work to which such Contribution(s) were
|
||||
submitted. If any entity institutes patent litigation against You or
|
||||
any other entity (including a cross-claim or counterclaim in a
|
||||
lawsuit) alleging that your Contribution, or the Work to which
|
||||
you have contributed, constitutes direct or contributory patent
|
||||
infringement, then any patent licenses granted to that entity under
|
||||
this Agreement for that Contribution or Work shall terminate as of
|
||||
the date such litigation is filed.
|
||||
|
||||
4. You represent that You are legally entitled to grant the above license. You
|
||||
represent further that the employee of the Corporation designated as the Initial
|
||||
CLA Manager below (and each who is designated in a subsequent written
|
||||
modification to the list of CLA Managers) (each, a “CLA Manager”) is
|
||||
authorized to maintain with the Project (1) the list of employees of the
|
||||
Corporation who are authorized to submit Contributions on behalf of the
|
||||
Corporation, and (2) the list of CLA Managers.
|
||||
|
||||
5. You represent that each of Your Contributions is Your original creation (see
|
||||
section 7 for submissions on behalf of others).
|
||||
|
||||
6. You are not expected to provide support for Your Contributions, except to the
|
||||
extent You desire to provide support. You may provide support for free, for a
|
||||
fee, or not at all. Unless required by applicable law or agreed to in writing,
|
||||
You provide Your Contributions on an “AS IS” BASIS, WITHOUT WARRANTIES OR
|
||||
CONDITIONS OF ANY KIND, either express or implied, including, without
|
||||
limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT,
|
||||
MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
7. Should You wish to submit work that is not Your original creation, You may
|
||||
submit it to the Project separately from any Contribution, identifying the
|
||||
complete details of its source and of any license or other restriction
|
||||
(including, but not limited to, related patents, trademarks, and license
|
||||
agreements) of which you are personally aware, and conspicuously marking the
|
||||
work as “Submitted on behalf of a third-party: [named here]”.
|
||||
|
||||
8. It is your responsibility to notify the Project when any change is required
|
||||
to the list of designated employees authorized to submit Contributions on behalf
|
||||
of the Corporation, or to the list of the CLA Managers.
|
||||
|
||||
\[Please complete and sign on the next page.\]
|
||||
|
||||
::: {style="page-break-after: always; visibility: hidden"}
|
||||
```{=tex}
|
||||
\pagebreak
|
||||
```
|
||||
:::
|
||||
|
||||
Please sign:
|
||||
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ Date:
|
||||
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
|
||||
|
||||
Signatory Name:
|
||||
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
|
||||
|
||||
Signatory E-mail:
|
||||
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
|
||||
|
||||
Signatory Title:
|
||||
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
|
||||
|
||||
Corporation Name:
|
||||
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
|
||||
|
||||
Corporation Address:
|
||||
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
|
||||
|
||||
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
|
||||
|
||||
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
|
||||
|
||||
Initial CLA Manager Name:
|
||||
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
|
||||
|
||||
Initial CLA Manager E-Mail:
|
||||
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
|
||||
@@ -0,0 +1,137 @@
|
||||
Project Name: OpenImageIO
|
||||
|
||||
Project Entity: OpenImageIO Project a Series of LF Projects, LLC
|
||||
|
||||
If emailing signed PDF, send to: manager@lfprojects.org
|
||||
|
||||
**Individual Contributor License Agreement ("Agreement") v2.1**
|
||||
|
||||
Thank you for your interest in the project specified above (the “Project”). In
|
||||
order to clarify the intellectual property license granted with Contributions
|
||||
from any person or entity, the Project must have a Contributor License Agreement
|
||||
(CLA) on file that has been signed by each Contributor, indicating agreement to
|
||||
the license terms below. This license is for your protection as a Contributor as
|
||||
well as the protection of the Project and its users; it does not change your
|
||||
rights to use your own Contributions for any other purpose.
|
||||
|
||||
If you have not already done so, please complete and sign this Agreement using
|
||||
the electronic signature portal made available to you by the Project or its
|
||||
third-party service providers, or email a PDF of the signed agreement to the
|
||||
email address specified above. Please read this document carefully before
|
||||
signing and keep a copy for your records.
|
||||
|
||||
You accept and agree to the following terms and conditions for Your present and
|
||||
future Contributions submitted to the Project. In return, the Project shall not
|
||||
use Your Contributions in a way that is contrary to the public benefit or
|
||||
inconsistent with its charter at the time of the Contribution. Except for the
|
||||
license granted herein to the Project and recipients of software distributed by
|
||||
the Project, You reserve all right, title, and interest in and to Your
|
||||
Contributions.
|
||||
|
||||
1. Definitions.
|
||||
|
||||
“You” (or “Your”) shall mean the copyright owner or legal entity authorized by
|
||||
the copyright owner that is making this Agreement with the Project. For legal
|
||||
entities, the entity making a Contribution and all other entities that control,
|
||||
are controlled by, or are under common control with that entity are considered
|
||||
to be a single Contributor. For the purposes of this definition, “control”
|
||||
means (i) the power, direct or indirect, to cause the direction or management
|
||||
of such entity, whether by contract or otherwise, or (ii) ownership of fifty
|
||||
percent (50%) or more of the outstanding shares, or (iii) beneficial ownership
|
||||
of such entity.
|
||||
|
||||
“Contribution” shall mean the code, documentation or other original works of
|
||||
authorship, including any modifications or additions to an existing work, that
|
||||
is intentionally submitted by You to the Project for inclusion in, or
|
||||
documentation of, any of the products owned or managed by the Project (the
|
||||
“Work”). For the purposes of this definition, “submitted” means any form of
|
||||
electronic, verbal, or written communication sent to the Project or its
|
||||
representatives, including but not limited to communication on electronic
|
||||
mailing lists, source code control systems, and issue tracking systems that are
|
||||
managed by, or on behalf of, the Project for the purpose of discussing and
|
||||
improving the Work, but excluding communication that is conspicuously marked or
|
||||
otherwise designated in writing by You as “Not a Contribution.”
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of this
|
||||
Agreement, You hereby grant to the Project and to recipients of software
|
||||
distributed by the Project a perpetual, worldwide, non-exclusive, no-charge,
|
||||
royalty-free, irrevocable copyright license to reproduce, prepare
|
||||
derivative works of, publicly display, publicly perform, sublicense,
|
||||
and distribute Your Contributions and such derivative works.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of this
|
||||
Agreement, You hereby grant to the Project and to recipients of software
|
||||
distributed by the Project a perpetual, worldwide, non-exclusive, no-charge,
|
||||
royalty-free, irrevocable (except as stated in this section) patent
|
||||
license to make, have made, use, offer to sell, sell, import, and
|
||||
otherwise transfer the Work, where such license applies only to
|
||||
those patent claims licensable by You that are necessarily infringed
|
||||
by Your Contribution(s) alone or by combination of Your
|
||||
Contribution(s) with the Work to which such Contribution(s) were
|
||||
submitted. If any entity institutes patent litigation against You or
|
||||
any other entity (including a cross-claim or counterclaim in a
|
||||
lawsuit) alleging that your Contribution, or the Work to which
|
||||
you have contributed, constitutes direct or contributory patent
|
||||
infringement, then any patent licenses granted to that entity under
|
||||
this Agreement for that Contribution or Work shall terminate as of
|
||||
the date such litigation is filed.
|
||||
|
||||
4. You represent that you are legally entitled to grant the above license. If
|
||||
your employer(s) has rights to intellectual property that you create that
|
||||
includes your Contributions, you represent that you have received permission to
|
||||
make Contributions on behalf of that employer, that your employer has waived
|
||||
such rights for your Contributions to the Project, or that your employer has
|
||||
executed a separate Corporate CLA with the Project.
|
||||
|
||||
5. You represent that each of Your Contributions is Your original creation (see
|
||||
section 7 for submissions on behalf of others). You represent that Your
|
||||
Contribution submissions include complete details of any third-party license or
|
||||
other restriction (including, but not limited to, related patents and
|
||||
trademarks) of which you are personally aware and which are associated with
|
||||
any part of Your Contributions.
|
||||
|
||||
6. You are not expected to provide support for Your Contributions, except to the
|
||||
extent You desire to provide support. You may provide support for free, for a
|
||||
fee, or not at all. Unless required by applicable law or agreed to in writing,
|
||||
You provide Your Contributions on an “AS IS” BASIS, WITHOUT WARRANTIES OR
|
||||
CONDITIONS OF ANY KIND, either express or implied, including, without
|
||||
limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT,
|
||||
MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
7. Should You wish to submit work that is not Your original creation, You may
|
||||
submit it to the Project separately from any Contribution, identifying the
|
||||
complete details of its source and of any license or other restriction
|
||||
(including, but not limited to, related patents, trademarks, and license
|
||||
agreements) of which you are personally aware, and conspicuously marking the
|
||||
work as “Submitted on behalf of a third-party: [named here]”.
|
||||
|
||||
8. You agree to notify the Project of any facts or circumstances of which you
|
||||
become aware that would make these representations inaccurate in any respect.
|
||||
|
||||
\[Please complete and sign on the next page.\]
|
||||
|
||||
::: {style="page-break-after: always; visibility: hidden"}
|
||||
```{=tex}
|
||||
\pagebreak
|
||||
```
|
||||
:::
|
||||
|
||||
Please sign:
|
||||
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
|
||||
Date: \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
|
||||
|
||||
Full name:
|
||||
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
|
||||
|
||||
Mailing Address:
|
||||
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
Country:
|
||||
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
|
||||
|
||||
E-Mail:
|
||||
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
|
||||
@@ -0,0 +1,21 @@
|
||||
OpenImageIO has been accepted to be an ASWF-administered project, by vote of
|
||||
the ASWF Technical Advisory Council (TAC) on May 3, 2023.
|
||||
|
||||
At this time, the ASWF subdirectory contains *proposed* (and sometimes TBD/WIP
|
||||
placeholders) project organization and policy documents that will be formally
|
||||
adopted as the OpenImageIO project is formally turned over to ASWF and moved
|
||||
to the AcademySoftwareFoundation GitHub account. Please file issues or PRs
|
||||
or review comments against these documents to make any suggested changes while
|
||||
we are revising the drafts.
|
||||
|
||||
Summary of the current state of documents:
|
||||
|
||||
| File | Status | Notes |
|
||||
| ---- | ------ | ----- |
|
||||
| CLA-corporate.md | Final | Standard ASWF corporate CLA, approved by the TSC. Will take effect when the repo moves. |
|
||||
| CLA-individual.md | Final | Standard ASWF individual CLA, approved by the TSC. Will take effect when the repo moves. |
|
||||
| CODE_OF_CONDUCT.md | Final | Links to the standard LF CoC, approved by the TSC and now in effect. |
|
||||
| CONTRIBUTING.md | Preliminary | Modified version of our existing CONTRIBUTING guidelines, lightly amended to reflect the changes that will come along with moving the repo, the new CLA/DCO rules, etc.
|
||||
| GOVERNANCE.md | Final | Approved by the TSC and now in effect. |
|
||||
| project_intake.md | Ongoing | This is the latest ASWF project intake checklist. We will check off items as we get them done. |
|
||||
| Technical-Charter.md | Final | Approved by the TSC. |
|
||||
@@ -0,0 +1,242 @@
|
||||
# Technical Charter (the "Charter") for OpenImageIO a Series of LF Projects, LLC
|
||||
|
||||
Adopted July 1, 2023 by unanimous vote of the TSC.
|
||||
|
||||
This Charter sets forth the responsibilities and procedures for technical
|
||||
contribution to, and oversight of, the OpenImageIO open source project, which
|
||||
has been established as OpenImageIO a Series of LF Projects, LLC (the
|
||||
“Project”). LF Projects, LLC (“LF Projects”) is a Delaware series limited
|
||||
liability company. All contributors (including committers, maintainers, and
|
||||
other technical positions) and other participants in the Project
|
||||
(collectively, “Collaborators”) must comply with the terms of this Charter.
|
||||
|
||||
### 1. Mission and Scope of the Project
|
||||
|
||||
* **a.** The mission of the Project is to develop software to read, write,
|
||||
and manipulate image files of any image file format relevant to vfx /
|
||||
animation via a format-agnostic API, with a feature set, scalability, and
|
||||
robustness needed for production.
|
||||
|
||||
* **b.** The scope of the Project includes collaborative development under
|
||||
the Project License (as defined herein) 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 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 are initially the Project’s Committers. At
|
||||
the inception of the project, the Committers of the Project will be as set
|
||||
forth within the “GOVERNANCE” file within the Project’s code repository.
|
||||
The TSC may choose an alternative approach for determining the voting
|
||||
members of the TSC, and any such alternative approach will be documented
|
||||
in the GOVERNANCE file. Any meetings of the Technical Steering Committee
|
||||
are intended to be open to the public, 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 GOVERNANCE 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. A Committer may be removed by a majority
|
||||
approval of the other existing Committers.
|
||||
|
||||
* **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 work flow 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 their 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, a directed 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 sub-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 of the Project (as provided for in the Series
|
||||
Agreement, 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.
|
||||
|
||||
### 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.** Quorum for TSC meetings requires at least fifty percent of all
|
||||
voting members of the TSC to be present. The TSC may continue to meet if
|
||||
quorum is not met but will be prevented from making any decisions at the
|
||||
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 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. In the event that a
|
||||
Project-specific CoC has not been approved, the LF Projects Code of
|
||||
Conduct listed at https://lfprojects.org/policies will apply for all
|
||||
Collaborators in the Project.
|
||||
|
||||
* **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 Collaborators must allow open participation from any individual
|
||||
or organization meeting the requirements for contributing under this
|
||||
Charter and any policies adopted for all Collaborators 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 Collaborators 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 Series 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 Collaborators in the Project will be in accordance with the
|
||||
license from LF Projects and inure to the benefit of LF Projects.
|
||||
|
||||
* **b.** The Project will, 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 the Joint Development
|
||||
Foundation 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, Joint Development Foundation and
|
||||
other partner organizations in the open source community; and
|
||||
|
||||
- **ii.** respect the rights of all trademark owners, including any
|
||||
branding and trademark usage guidelines.
|
||||
|
||||
### 7. Intellectual Property Policy
|
||||
|
||||
* **a.** Collaborators acknowledge that the copyright in all new
|
||||
contributions will 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.
|
||||
|
||||
* **a.** Except as described in Section 7.c., all contributions to the
|
||||
Project are subject to the following:
|
||||
|
||||
- **i.** All new inbound code contributions to the Project must be made
|
||||
using the Apache License, Version 2.0 available at
|
||||
http://www.apache.org/licenses/LICENSE-2.0 (the “Project License”).
|
||||
|
||||
- **ii.** All new inbound code contributions must also be accompanied by
|
||||
(i) a Developer Certificate of Origin (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 and (ii) a duly executed contribution license agreement in the
|
||||
form approved by the TSC;
|
||||
|
||||
- **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/).
|
||||
|
||||
- **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 will
|
||||
comply with the contribution process and license terms for the
|
||||
applicable Upstream Project.
|
||||
|
||||
* **c.** The TSC may approve the use of an alternative license or licenses
|
||||
for inbound or outbound contributions on an exception basis. 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. License exceptions must be approved by a
|
||||
two-thirds vote of the entire TSC.
|
||||
|
||||
* **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
|
||||
and is subject to approval by LF Projects.
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 9.4 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 18 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 18 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 271 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 313 KiB |
@@ -0,0 +1,66 @@
|
||||
# Project Intake checklist
|
||||
|
||||
This is a checklist for TSC's to review as part of the intake process. The TSC should review this entire list during the kickoff meeting. For anything outstanding, create an [issue](../issues) to track and link to it in the list
|
||||
|
||||
- Existing Project Governance
|
||||
- [X] A [LICENSE.md](../LICENSE.md) file in every code repository, with the license chosen an OSI-approved license.
|
||||
- [X] Any third-party components/dependencies included are listed along with thier licenses ( [THIRD-PARTY.md](../THIRD-PARTY.md) )
|
||||
- [X] A [README.md](../README.md) file welcoming new community members to the project and explaining why the project is useful and how to get started.
|
||||
- [X] A [CONTRIBUTING.md](../CONTRIBUTING.md) file explaining to other developers and your community of users how to contribute to the project. The file should explain what types of contributions are needed and how the process works, along with how to disclose security issues responsibly ( may also point to a [SECURITY.md](../SECURITY.md) file ).
|
||||
- [ ] A [CODEOWNERS](../CODEOWNERS) or [COMMITTERS](../COMMITERS.csv) file to define individuals or teams that are responsible for code in a repository; document current project owners and current and emeritus committers.
|
||||
- [X] A [CODE_OF_CONDUCT.md](../CODE_OF_CONDUCT.md) file that sets the ground rules for participants’ behavior associated and helps to facilitate a friendly, welcoming environment. By default, projects should leverage the Linux Foundation Code of Conduct unless an alternate Code of Conduct was previously approved.
|
||||
- [X] A [RELEASING.md](../RELEASING.md) file that provides documentation on the release methodology, cadence, criteria, etc.
|
||||
- [X] A [GOVERNANCE.md](../GOVERNANCE.md) file that documents the project’s technical governance.
|
||||
- [ ] A [SUPPORT.md](../SUPPORT.md) file to let users and developers know about ways to get help with your project.
|
||||
- Infrastructure/Assets
|
||||
- [X] Technical Charter Approved
|
||||
- [ ] **(Awaiting scan from LF)** License scan completed and no issues found
|
||||
- [ ] Code repository imported to ASWF GitHub organization or ownership of current GitHub organization given to `thelinuxfoundation` user
|
||||
- [X] Developer Certificate of Origin past commit signoff done and DCO Probot enabled.
|
||||
- [X] Issue/feature tracker established (JIRA, GitHub issues)
|
||||
- [X] Mailing lists ( one of )
|
||||
- [X] Setup new lists ( -dev@ and -tsc@ ) on [ASWF groups.io](https://lists.aswf.io) ( create [issue on foundation repo](https://github.com/AcademySoftwareFoundation/foundation/issues/new) to setup )
|
||||
- [X] (In progress) Move to [ASWF groups.io](https://lists.aswf.io) ( create [issue on foundation repo](https://github.com/AcademySoftwareFoundation/foundation/issues/new) to transfer )
|
||||
- [X] Slack ( create [issue on foundation repo](https://github.com/AcademySoftwareFoundation/foundation/issues/new) to setup project channel on [ASWF Slack](https://slack.aswf.io) )
|
||||
- [ ] Website
|
||||
- [X] CI/build environment
|
||||
- [X] Trademarks/mark ownership rights ( complete 'LF Projects - Form of Trademark and Account Assignment' - create [issue on foundation repo](https://github.com/AcademySoftwareFoundation/foundation/issues/new) - only needed if project using existing name )
|
||||
- [ ] Domain name ( create [issue with the LF IT staff](https://jira.linuxfoundation.org/plugins/servlet/theme/portal/2/group/19) to setup/transfer )
|
||||
- [ ] Zoom account access ( create [issue on foundation repo](https://github.com/AcademySoftwareFoundation/foundation/issues/new) to get access to credentials )
|
||||
- [X] (N/A) Social media accounts or other project accounts ( create [issue on foundation repo](https://github.com/AcademySoftwareFoundation/foundation/issues/new) to transfer )
|
||||
- [X] Logo(s) ( create [issue on artwork repo](https://github.com/AcademySoftwareFoundation/artwork/issues/new) to add in SVG and PNG format and color/black/white )
|
||||
- New Project Governance
|
||||
- [X] TSC members identified
|
||||
- [X] First TSC meeting held
|
||||
- [X] TSC meeting cadence set and added to project calendar
|
||||
- [X] CLA Approved ( if used ) ( [CCLA](CLA-corporate.md) and [ICLA](CLA-individual.md) )
|
||||
- Project charter ( [Technical-Charter.md](Technical-Charter.md) )
|
||||
- [X] Approved by TSC
|
||||
- [ ] Filed ( create pull request against [foundation repo](https://github.com/AcademySoftwareFoundation/foundation) )
|
||||
- [X] [Core Infrastructure Initiative Best Practices Badge](https://bestpractices.coreinfrastructure.org/) achieved as the 'Passing' level.
|
||||
- Outreach
|
||||
- [ ] New project announcement done ( create [issue on foundation repo](https://github.com/AcademySoftwareFoundation/foundation/issues/new) to trigger )
|
||||
- [X] Project added to ASWF website and ASWF landscape
|
||||
- Incubation Stage requirements
|
||||
- [X] Have achieved and maintained a [OpenSSF Best Practices Badge at the passing level](https://bestpractices.coreinfrastructure.org/en/criteria).
|
||||
- [ ] Have had a successful license scan with any critical issues remedied.
|
||||
- [ ] Have a defined project mission and scope
|
||||
- [ ] An overview of the project’s architecture and features defined.
|
||||
- [ ] A project roadmap defined, which should address the following questions.
|
||||
- What use cases are possible now?
|
||||
- What does the next year look like in terms of additional features and use cases covered?
|
||||
- [ ] Community and contributor growth assessment
|
||||
- The current number of contributors and committers, and the number of different organizations contributing to the project.
|
||||
- Demonstrate a sustained flow of commits / merged contributions
|
||||
- A credible plan for developing a thriving user community, in particular expanding the number of committers and contributors?
|
||||
- Outline of the plan for the project to complete the requirements for Adopted Stage
|
||||
- [ ] Obtain an affirmative vote of the TAC.
|
||||
- Adopted Stage graduation requirements
|
||||
- [ ] Demonstrate a substantial ongoing flow of commits and merged contributions, authored by a healthy number of diverse contributors.
|
||||
- [ ] Demonstrable roadmap progress.
|
||||
- [ ] A healthy number of public adopters that are identified within the project ( using an ADOPTERS file or showcased on the project’s website ).
|
||||
- [ ] Have achieved and maintained an [OpenSSF Best Practices Badge at the gold level](https://bestpractices.coreinfrastructure.org/en/criteria/2).
|
||||
- [ ] Have a technical lead appointed for voting representation of the project to the TAC.
|
||||
- [ ] Be deemed by the TAC to add value to the mission of ASWF.
|
||||
- [ ] 2/3 supermajority vote of the TAC
|
||||
- [ ] Affirmative majority vote of the Governing Board
|
||||
+333
-4
@@ -1,4 +1,303 @@
|
||||
Release 2.4 (15 Sept 2022?) -- compared to 2.3
|
||||
Release 2.4.15.0 (1 Sep 2023) -- compared to 2.4.14.0
|
||||
-------------------------------------------------------
|
||||
- *bmp*: Fix signed integer overflow when computing total number of pixels [#3948](https://github.com/OpenImageIO/oiio/pull/3948) (by xiaoxiaoafeifei)
|
||||
- *dds*: Fix div by 0 during DXT4 DDS load [#3959](https://github.com/OpenImageIO/oiio/pull/3959) (by Jesse Yurkovich)
|
||||
- *rla*: Invalid read from an empty vector during RLA load [#3960](https://github.com/OpenImageIO/oiio/pull/3960) (by Jesse Yurkovich)
|
||||
- *fix*: Various protections against corrupted files [#3954](https://github.com/OpenImageIO/oiio/pull/3954)
|
||||
- *fix*: Improve Utf-8 text rendering [#3935](https://github.com/OpenImageIO/oiio/pull/3935) (by Nicolas)
|
||||
- *fix*: Fix typo in debug output [#3956](https://github.com/OpenImageIO/oiio/pull/3956) (by Jesse Yurkovich)
|
||||
- *ustring.h*: String literal operator for ustring and ustringhash [#3939](https://github.com/OpenImageIO/oiio/pull/3939)
|
||||
- *build* Suppress Xcode warnings [#3940](https://github.com/OpenImageIO/oiio/pull/3940) (by Anton Dukhovnikov)
|
||||
- *build*: Silence gcc new/delete warnings for texturesys [#3944](https://github.com/OpenImageIO/oiio/pull/3944) (by Shootfast)
|
||||
- *build* Added check for Boost_NO_BOOST_CMAKE, ignore if already set [#3961](https://github.com/OpenImageIO/oiio/pull/3961) (by Mikael Sundell)
|
||||
- *build* Fix broken libheif < 1.13 [#3970](https://github.com/OpenImageIO/oiio/pull/3970)
|
||||
- *ci*: Make more robust timer_test [#3953](https://github.com/OpenImageIO/oiio/pull/3953)
|
||||
- *admin* Relicense code under Apache 2.0 [#3938](https://github.com/OpenImageIO/oiio/pull/3938) [#3966](https://github.com/OpenImageIO/oiio/pull/3966)
|
||||
|
||||
Release 2.4.14.0 (1 Aug 2023) -- compared to 2.4.13.0
|
||||
-------------------------------------------------------
|
||||
- *ico*: IOProxy support for ICO input [#3919](https://github.com/OpenImageIO/oiio/pull/3919) (by jasonbaumeister)
|
||||
- *fix(psd)*: CMYK PSD files now copy alpha correctly [#3918](https://github.com/OpenImageIO/oiio/pull/3918) (by jasonbaumeister)
|
||||
- *fix(python)*: Fix arithmetic overflow in oiio_bufinfo (Python interop) [#3931](https://github.com/OpenImageIO/oiio/pull/3931) (by Jesse Yurkovich)
|
||||
- *build*: Fix WebP linking if CMAKE_FIND_PACKAGE_PREFER_CONFIG is ON
|
||||
[#3863](https://github.com/OpenImageIO/oiio/pull/3863) (by Benjamin Buch)
|
||||
- *build*: Find OpenEXR equally well with our FindOpenEXR and exr's exported
|
||||
config file [#3862](https://github.com/OpenImageIO/oiio/pull/3862) (by Benjamin Buch)
|
||||
- *build*: Fix broken OIIO_NO_NEON definition [#3911](https://github.com/OpenImageIO/oiio/pull/3911)
|
||||
- *ci*: Lock down icx version [#3929](https://github.com/OpenImageIO/oiio/pull/3929)
|
||||
- *ci*: Bump build_openexr and build_opencolorio defaults to latest versions [#3920](https://github.com/OpenImageIO/oiio/pull/3920)
|
||||
- *admin*: Update mail list to https://lists.aswf.io/g/oiio-dev
|
||||
[#3880](https://github.com/OpenImageIO/oiio/pull/3880)
|
||||
- *admin*: Add charter and other ASWF documents to the repo
|
||||
[#3850](https://github.com/OpenImageIO/oiio/pull/3850)
|
||||
- *admin*: Document use of the DCO which is now required for all PRs
|
||||
[#3897](https://github.com/OpenImageIO/oiio/pull/3897)
|
||||
- *admin*: Put logo on the main readme
|
||||
[#3927](https://github.com/OpenImageIO/oiio/pull/3927)
|
||||
- *admin*: Remove old CLAs that are no longer in effect
|
||||
- *admin*: Change open source license to Apache 2.0. #3899, #3903, #3904,
|
||||
#3906, #3914, #3922, #3926.
|
||||
|
||||
Release 2.4.13.0 (1 July 2023) -- compared to 2.4.12.0
|
||||
-------------------------------------------------------
|
||||
- *OpenCV*: Improve OpenCV support -- errors, version, half [#3853](https://github.com/OpenImageIO/oiio/pull/3853)
|
||||
- *IBA*: Improve error message for IBA::ocio functions [#3887](https://github.com/OpenImageIO/oiio/pull/3887)
|
||||
- *exif*: Convert paramvalue string to integer when needed [#3886](https://github.com/OpenImageIO/oiio/pull/3886) (by Fabien Servant @ TCS)
|
||||
- *exr*: Correction to dwa vs zip logic when outputting OpenEXR [#3884](https://github.com/OpenImageIO/oiio/pull/3884)
|
||||
- *ico*: Heap-buffer-overflow [#3872](https://github.com/OpenImageIO/oiio/pull/3872) (by xiaoxiaoafeifei) Fixes CVE-2023-36183.
|
||||
- *jpeg*: Fix density calculation for jpeg output [#3861](https://github.com/OpenImageIO/oiio/pull/3861) (by Loïc Vital)
|
||||
- *jpeg2000*: Better pixel type promotion logic [#3878](https://github.com/OpenImageIO/oiio/pull/3878)
|
||||
- *psd*: Prevent simultaneous psd thumbnail reads from clashing [#3877](https://github.com/OpenImageIO/oiio/pull/3877)
|
||||
- *strutil.h*: Ensure proper constexpr of string hashing [#3901](https://github.com/OpenImageIO/oiio/pull/3901)
|
||||
- *build* Fix use of OIIO_LOCAL_DEPS_PATH [#3865](https://github.com/OpenImageIO/oiio/pull/3865)
|
||||
- *build* Fix fmt vs gcc warning that had version typo [#3874](https://github.com/OpenImageIO/oiio/pull/3874)
|
||||
- *ci*: Add test with new aswf containers for VFX Platform 2023 [#3875](https://github.com/OpenImageIO/oiio/pull/3875)
|
||||
- *ci*: Fix broken heif dependency and test [#3894](https://github.com/OpenImageIO/oiio/pull/3894)
|
||||
- *ci*: Simplify build_llvm.bash script [#3892](https://github.com/OpenImageIO/oiio/pull/3892)
|
||||
- *tests*: Fix missing simd test due to copy paste typo [#3896](https://github.com/OpenImageIO/oiio/pull/3896)
|
||||
- *docs*: Update CONTRIBUTING and SECURITY [#3852](https://github.com/OpenImageIO/oiio/pull/3852)
|
||||
- *docs*: ImageInput and ImageOutput docs updated to Python 3. [#3866](https://github.com/OpenImageIO/oiio/pull/3866) (by Ziggy Cross)
|
||||
- *docs*: Many fixes to python code examples [#3869](https://github.com/OpenImageIO/oiio/pull/3869) (by Jesse Y)
|
||||
- *docs*: Update mail list URL [#3880](https://github.com/OpenImageIO/oiio/pull/3880)
|
||||
- *docs*: Fix explanation of raw:Exposure config hint [#3889](https://github.com/OpenImageIO/oiio/pull/3889)
|
||||
- *docs*: Document use of the DCO which is now required for all PRs [#3897](https://github.com/OpenImageIO/oiio/pull/3897)
|
||||
|
||||
|
||||
|
||||
Release 2.4.12.0 (1 June 2023) -- compared to 2.4.11.1
|
||||
------------------------------------------------------
|
||||
- *oiiotool*: Don't propagate unsupported channels [#3838](https://github.com/OpenImageIO/oiio/pull/3838)
|
||||
- *oiiotool*: Improvements to performance and memory when making very large textures [#3829](https://github.com/OpenImageIO/oiio/pull/3829)
|
||||
- *fix*: Prevent possible deadlock when reading files with wrong extensions [#3845](https://github.com/OpenImageIO/oiio/pull/3845)
|
||||
- *gif*: Prevent possible heap buffer overflow [#3841](https://github.com/OpenImageIO/oiio/pull/3841) (by xiaoxiaoafeifei)
|
||||
- *psd*: Improve memory efficiency of PSD read [#3807](https://github.com/OpenImageIO/oiio/pull/3807)
|
||||
- *raw*: Fix LibRaw flip to Exif orientation conversion [#3847](https://github.com/OpenImageIO/oiio/pull/3847) (by Loïc Vital)
|
||||
- *raw*: Raw input fix user_flip usage [#3858](https://github.com/OpenImageIO/oiio/pull/3858) (by Loïc Vital)
|
||||
- *strutil*: Use forward properly for sync::print(). [#3825](https://github.com/OpenImageIO/oiio/pull/3825)
|
||||
- *build*: Fixes for latest xcode on MacOS 13.3 Ventura [#3854](https://github.com/OpenImageIO/oiio/pull/3854)
|
||||
- *build*: Fix build error with MSVC [#3832](https://github.com/OpenImageIO/oiio/pull/3832) (by Ray Molenkamp)
|
||||
- *ci*: Fix warnings [#3833](https://github.com/OpenImageIO/oiio/pull/3833)
|
||||
- *ci*: Fix package name for icc [#3860](https://github.com/OpenImageIO/oiio/pull/3860)
|
||||
|
||||
|
||||
Release 2.4.11.1 (14 May 2023) -- compared to 2.4.11.0
|
||||
------------------------------------------------------
|
||||
- *build*: Fmt 10.0 support [#3836](https://github.com/OpenImageIO/oiio/pull/3836)
|
||||
|
||||
Release 2.4.11.0 (1 May 2023) -- compared to 2.4.10.0
|
||||
------------------------------------------------------
|
||||
* oiiotool: For expression evaluation, `NIMAGES` now evaluates to the current
|
||||
image stack depth. #3822
|
||||
* Python: Improve error messages when passing wrong python array sizes. #3801
|
||||
* Raw: handle 1-channel raw images. #3798
|
||||
* HEIC: Support the ".hif" extension, which seems to be used by some Canon
|
||||
cameras instead of .heif. #3813
|
||||
* PSD: Fix problems reading images with width > 64k pixels. #3806
|
||||
* Windows/fmath: Work around MSVS bug(?) that generated wrong code for
|
||||
fast_exp2. #3804
|
||||
* Build: Fix building on OpenBSD. #3808
|
||||
* Build: Refactor simd.h to disable Intel intrinsics when not on Intel
|
||||
(including Cuda compiles). #3814
|
||||
* Build: Fix building against new ffmpeg 6.0. #3812
|
||||
* Build: Work around problems with fmt library + NVPTX relating to unknown
|
||||
float128 type. #3823
|
||||
* CI/test: Fix incorrect branch name when cloning openexr-images for the
|
||||
testsuite. #3814
|
||||
* Test: Use copies instead of symlinks in a couple spots to help on Windows.
|
||||
#3818
|
||||
|
||||
Release 2.4.10.0 (1 Apr 2023) -- compared to 2.4.9.0
|
||||
-----------------------------------------------------
|
||||
* Exif: Fix typo that prevented us from correctly naming Exif
|
||||
"CameraElevationAngle" metadata. #3783
|
||||
* IC/TS: Fixes that avoid deadlock situations on the file handle cache
|
||||
in certain scenarios with very high thread contention. #3784
|
||||
* Docs: Some retroactive edits to INSTALL.md to correctly document changed
|
||||
dependencies of the 2.4 series.
|
||||
* GIF: Fix potential array overrun when writing GIF files. #3789
|
||||
* Build: Fixes to make a clean build on Mac using Apple Clang 11.0. #3795
|
||||
* FYI: This version of OIIO should build against Clang 16.
|
||||
* maketx: Fix a broken --cdf flag, which was set up to take an argument, but
|
||||
should always simply have acted as a simple boolean flag on its own. The
|
||||
incorrect way it was set up not only was useless, but also could lead to
|
||||
occasional crashes. #3748
|
||||
* maketx and oiiotool --otex: Add support for CDFs of bumpslopes channels.
|
||||
Previously, if you used both --bumpslopes and --cdf at the same time, the
|
||||
CDFs were not produced for all channels. #3793
|
||||
|
||||
Release 2.4.9.0 (1 Mar 2023) -- compared to 2.4.8.1
|
||||
-----------------------------------------------------
|
||||
* Build: check need for libatomic with check_cxx_source_compiles instead of
|
||||
the more expensive check_cxx_source_runs. #3774
|
||||
* Fix(IC): Avoid bad IC stats when no files were read. #3765
|
||||
* Build: Add a cmake option OIIO_DISABLE_BOOST_STACKTRACE to disable use and
|
||||
dependency of boost stacktrace. #3777
|
||||
* ustringhash: Make an explicit constructor from a hash value. #3778
|
||||
* Build: Add ability to build against Qt6. #3779
|
||||
|
||||
Release 2.4.8.1 (13 Feb 2023) -- compared to 2.4.8.0
|
||||
-----------------------------------------------------
|
||||
* Fix(targa): guard against corrupted tga files Fixes TALOS-2023-1707 /
|
||||
CVE-2023-24473, TALOS-2023-1708 / CVE-2023-22845. #3768
|
||||
* Fix: race condition in TIFF reader, fixes TALOS-2023-1709 / CVE-2023-24472.
|
||||
#3772
|
||||
* Windows: Fix unresolved external symbol for MSVS 2017 #3763
|
||||
* Fix: Initialize OpenEXROutput::m_levelmode() in init(). #3764
|
||||
* Fix: improve thread safety for concurrent tiff loads. #3767
|
||||
* Fix(fits): Make sure to close if open fails to find right magic number.
|
||||
#3771
|
||||
|
||||
Release 2.4.8.0 (1 Feb 2023) -- compared to 2.4.7.1
|
||||
----------------------------------------------------
|
||||
* oiiotool --pdiff: test, be sure to count it as making output. #3723
|
||||
* IBAprep should not zero out deep images when creating dst #3724
|
||||
* PBM: Fix for incorrect inverting of 1-bit pbm images. #3731
|
||||
* New `ImageSpec:set_colorspace()` sets color space metadata in a consistent
|
||||
way. #3734
|
||||
* BMP: set colorspace to sRGB #3701
|
||||
* PNG: Add EXIF support when writing PNG files. #3735
|
||||
* PSD: Fix wrong oiio:UnassociatedAlpha metadata for PSD files. #3750
|
||||
* platform.h: set up macros for detecting MSVS 2019 and 2022 #3727
|
||||
* typedesc.h: Extend TypeDescFromC template to the full set of pixel types
|
||||
#3726
|
||||
* Testing: many improvements for testing and code coverage. #3730 #3654 #3694
|
||||
#3699 #3732 #3741 #3745 #3747
|
||||
* Testing: Fix long-broken ref images for texture-icwrite test #3733
|
||||
* Docs: Updated RTD docmentation style, looks much nicer. #3737
|
||||
* Docs: improve description of ociodisplay and others.
|
||||
* Docs: Fix old release notes to document all CVEs addressed in certain
|
||||
prior releases.
|
||||
|
||||
|
||||
Release 2.4.7.1 (3 Jan 2023) -- compared to 2.4.7.0
|
||||
----------------------------------------------------
|
||||
* Fix build break for Mac ARM. #3735
|
||||
* CMake config should not include a find of fmt if it's internalized. #3739
|
||||
|
||||
Release 2.4.7.0 (1 Jan 2023) -- compared to 2.4.6.0
|
||||
----------------------------------------------------
|
||||
* IOMemReader detects and errors for out-of-range read positions. #3712
|
||||
* Build/Mac: Suppress some deprecation warnings when building wth the newest
|
||||
Apple clang. #3709 #3710
|
||||
* ARM: Fix signed/unsigned SIMD mismatch in vbool4::load. #3722
|
||||
* Build: New CMake variable `INTERNALIZE_FMT`, when set to OFF will ensure
|
||||
that the fmt headers are not internalized (copied to the installed part
|
||||
of OIIO). The default is ON, matching old behavior. #3598
|
||||
* Testing: Improved testing of iinfo #3688 #3706, 'term' output #3714, igrep
|
||||
#3715.
|
||||
* build_openexr.bash: bump default version of OpenEXR/Imath retrieved to be
|
||||
3.1.5. #3703
|
||||
* span.h: Make sure the cspan alias also allows the Extent template
|
||||
argument; add a custom formatter to print spans. #3685
|
||||
* ustring.h: `#if` guards to let the header be Cuda-safe. #3718
|
||||
* Internals: refactoring to remove duplicated code for iinfo and
|
||||
`oiiotool --info`. #3688
|
||||
* Internals: remove the last instances of unsafe std::sprintf. #3705
|
||||
|
||||
Release 2.4.6 (1 Dec 2022) -- compared to 2.4.5.0
|
||||
---------------------------------------------------
|
||||
* make_texture / maketx : ensure proper setting of certain metadata when
|
||||
using a texture as a source to build another texture. #3634
|
||||
* Build: Make sure use of `${PROJECT_NAME}` doesn't occur before the call to
|
||||
`project()`. #3651
|
||||
* Fix null pointer dereference when OCIO no configuration is found. #3652
|
||||
* Support for building against OpenColorIO 2.2. #3662
|
||||
* Fixes to subtle bugs when ImageBuf is used with IOProxy. #3666
|
||||
* oiiotool: Fix problems with `--point` when there is no alpha channel. #3684
|
||||
* oiiotool: `--dumpdata` fix channel name output. #3687
|
||||
* BMP: Fix possible write errors, fixes TALOS-2022-1653 / CVE-2022-43594,
|
||||
CVE-2022-43595. #3673
|
||||
* DPX: Fix possible write errors, fixes TALOS-2022-1651 / CVE-2022-43592 and
|
||||
TALOS-2022-1652 / CVE-2022-43593. #3672
|
||||
* IFF files: Add IOProxy support. #3647
|
||||
* IFF: Fix possible write errors, fixes TALOS-2022-1654 / CVE-2022-43596,
|
||||
TALOS-2022-1655 / CVE-2022-43597 CVE-2022-43598, TALOS-2022-1656 /
|
||||
CVE-2022-43599 CVE-2022-43600 CVE-2022-43601 CVE-2022-43602 #3676
|
||||
* PSD: Fix thumbnail extraction. #3668
|
||||
* PSD: when reading, don't reject padded thumbnails. #3677
|
||||
* Raw: Update Exif orientation if user flip is set. #3669
|
||||
* Zfile write safety, fixes TALOS-2022-1657 / CVE-2022-43603. #3670
|
||||
* filesystem.h: new `Filesystem::is_executable()` and `find_program()`. #3638
|
||||
* filesystem.h: Change IOMemReader constructor to take a const buffer
|
||||
pointer. #3665
|
||||
* strutil.h: new `trimmed_whitspace()`. #3636
|
||||
* New `OIIO::print()` exposes `Strutil::print()` in the main OIIO namespace.
|
||||
#3667
|
||||
* Testing: improved testing of oiiotool #3637 #3643 #3649, Strutil #3655
|
||||
|
||||
Release 2.4.5 (1 Nov 2022) -- compared to 2.4.4.2
|
||||
---------------------------------------------------
|
||||
* oiiotool: new commands `--iccread` reads a named file and adds its contents
|
||||
as the ICCProfile metadata of the top image, `--iccwrite` saves the
|
||||
ICCProfile metadata of the top file to a named file. #3550
|
||||
* TIFF, JPEG, JPEG-2000, PNG, and PSD files containing ICC profiles now
|
||||
extract and report extra metadata related to aspects of those profiles.
|
||||
#3554
|
||||
* Python: support `int8[]` metadata and retrieving the `ICCPorofile` metadata.
|
||||
#3556
|
||||
* oiiotool: New expression syntax for retrieving metadata `{TOP[foo]}` is
|
||||
similar to the existing `{TOP.foo}`, if there is no `foo` metadata found,
|
||||
the former evaluates to an empty string, whereas the latter is an error.
|
||||
#3619
|
||||
* Strutil: new `utf16_to_utf8(const std::u16string&)` and
|
||||
`Strutil::utf8_to_utf16wstring()`. #3553
|
||||
* ustring: make `std::hash` work for ustring, add `operator<` for ustringhash,
|
||||
add `from_hash()` to ustringhash, make ustringhash `==` and `!=` be
|
||||
constexpr for C++17 and beyond. #3577 Custom fmt formatter for ustringhash
|
||||
that prints the string rather than the hash. #3614
|
||||
* Build: the version number is now a CMake cache variable that can be
|
||||
overridden (caveat emptor). #3549
|
||||
* Build/security: New CMake cache variable `FORTIFY_SOURCE`, if enabled,
|
||||
builds with the specified gcc `_FORTIFY_SOURCE` option defined. This may be
|
||||
desirable for people deploying OIIO in security-sensitive environments.
|
||||
#3575
|
||||
* CI: testing now includes using undefined behavior sanitizer. #3565
|
||||
* Windows: protect against OpenEXR thread deadlock on shutdown. #3582
|
||||
* Windows: Work around a static destruction order issue. #3591
|
||||
* Windows: define `NOGDI` to keep the inclusion of windows.h from adding as
|
||||
many unneeded symbols. #3596
|
||||
* MinGW: fix incorrect symbol visibility issue for ImageBuf iterators. #3578
|
||||
* ARM: improve SIMD operations for ARM NEON. #3599
|
||||
* Docs: New RELEASING.md documents our releasing procedures. #3564 #3580
|
||||
* Docs: Better Windows build instructions in INSTALL.md. #3602
|
||||
* Fix missing OIIO::getattribute support for `limits:channels` and
|
||||
`limits:imagesize_MB`. #3617
|
||||
* BMP: fix reading 16bpp images. #3592
|
||||
* BMP: protect against corrupt pixel coordinates. (TALOS-2022-1630,
|
||||
CVE-2022-38143) #3620
|
||||
* DDS: fix alpha/luminance files, better testing. #3581
|
||||
* DDS: optimize loading of compressed images, improves 3-5x. #3583 #3584
|
||||
* DDS: Fix crashes for cubemap files when a cube face was not present, and
|
||||
check for invalid bits per pixel. (TALOS-2022-1634, CVE-2022-41838)
|
||||
(TALOS-2022-1635, CVE-2022-41999) #3625
|
||||
* HDR: fix a 8x (!) read performance regression for HDR files that was
|
||||
introduced in OIIO in 2.4. #3588 On top of that, speed up by another 4x
|
||||
beyond what we ever did before by speeding up the RGBE->float conversion.
|
||||
#3590
|
||||
* PNG: fix memory leaks when errors take an early exit. #3543 #3544
|
||||
* PSD: fix a PSD read error on ARM architecture. #3589
|
||||
* PSD: protect against corrupted embedded thumbnails. (TALOS-2022-1626,
|
||||
CVE-2022-41794) #3629
|
||||
* RAW: additional color metadata is now recognized: `pre_mul`, `cam_mul`,
|
||||
`cam_xyz`, `rgb_cam`. #3561 #3569 #3572
|
||||
* RLA: fix potential buffer overrun. (TALOS-2022-1629, CVE-2022-36354) #3624
|
||||
* Targa: string overflow safety. (TALOS-2022-1628, CVE-2022-41981) #3622
|
||||
* TIFF/JPEG/PSD: Fix EXIF bugs where corrupted exif blocks could overrun
|
||||
memory. (TALOS-2022-1626, CVE-2022-41794) (TALOS-2022-1631, CVE-2022-41649)
|
||||
(TALOS-2022-1632, CVE-2022-41684) (TALOS-2022-1636 CVE-2022-41837) #3627
|
||||
* TIFF: guard against corrupt files with buffer overflows. (TALOS-2022-1627,
|
||||
CVE-2022-41977) #3628
|
||||
* TIFF: guard against buffer overflow for certain CMYK files.
|
||||
(TALOS-2022-1633, CVE-2022-41639) (TALOS-2022-1643, CVE-2022-41988) #3632
|
||||
|
||||
Release 2.4.4.2 (3 Oct 2022) -- compared to 2.4.4.1
|
||||
---------------------------------------------------
|
||||
* DDS: Improved support for DTX5, ATI2/BC5 normal maps, R10G10B10A2
|
||||
format, RXGB, BC4U, BC5U, A8, improved low bit expansion to 8 bits.
|
||||
#3573 (2.4.4.2)
|
||||
* DDS: Fix possible heap overflow on input. #3542 (2.4.4.2)
|
||||
|
||||
Release 2.4 (1 Oct 2022) -- compared to 2.3
|
||||
----------------------------------------------
|
||||
New minimum dependencies and compatibility changes:
|
||||
* OpenEXR minimum is now 2.3 (raised from 2.0). #3109 (2.4.0)
|
||||
@@ -116,6 +415,9 @@ New major features and public API changes:
|
||||
(2.4.2/2.3.14)
|
||||
- `IBA::bluenoise_image()` returns a reference to a periodic blue noise
|
||||
image. #3141 #3254 (2.4.0/2.3.10)
|
||||
* ImageCache / TextureSystem :
|
||||
- IC/TS both have added a `getattributetype()` method, which retrieves
|
||||
just the type of a named attribute. #3559 (2.4.4.0)
|
||||
* Python bindings:
|
||||
- New ImageBuf constructor and reset() from a NumPy array only -- it
|
||||
deduces the resolution, channels, and data type from the array
|
||||
@@ -283,6 +585,8 @@ Fixes and feature enhancements:
|
||||
- Bug fix for `ImageBufAlgo.clamp()`: when just a float was passed for the
|
||||
min or max, it only clamped the first channel instead of all channels.
|
||||
#3265 (2.3.12/2.4.0)
|
||||
- Fix the ability to `getattribute()` of int64 and uint64 metadata or
|
||||
attributes. #3555 (2.4.4.0)
|
||||
* idiff:
|
||||
- `--allowfailures` allows that number of failed pixels of any magnitude.
|
||||
#3455 (2.4.2)
|
||||
@@ -487,7 +791,8 @@ Developer goodies / internals:
|
||||
support for using TBB for the thread pool (which seems slightly faster
|
||||
than our internal thread pool). By default it still uses the internal
|
||||
pool, but if OIIO::attribute("use_tbb") is set to nonzero, it will use
|
||||
the TBB thread pool if built against TBB. #3473 (2.4.2.2)
|
||||
the TBB thread pool if built against TBB. #3473 (2.4.2.2) #3566
|
||||
(2.4.4.0)
|
||||
* paramlist.h
|
||||
- Various internal fixes that reduce the amount of ustring construction
|
||||
that happens when constructing ParamValue and ParamList, and making
|
||||
@@ -626,6 +931,8 @@ Build/test system improvements and platform ports:
|
||||
work correctly on Debian systems where there are multiple filesystem
|
||||
components to the path. #3487 (2.4.2.1)
|
||||
- On MacOS, do not force MACOS_RPATH on. #3523 (2.4.2.2)
|
||||
- Improvements to the generated cmake config files when building static
|
||||
libraries. #3552 #3557 (2.4.4.0)
|
||||
* Dependency version support:
|
||||
- When using C++17, use std::gcd instead of boost. #3076 (2.4.0)
|
||||
- When using C++17, use `inline constexpr` instead of certain statics.
|
||||
@@ -648,7 +955,8 @@ Build/test system improvements and platform ports:
|
||||
- Upgrade the internal fallback implemention of PugiXML to the latest
|
||||
version. #3494 (2.4.2.2)
|
||||
- Fixes for ffmpeg 5.1 detection. #3516 (2.3.19.0/2.4.2.2)
|
||||
- Support for gcc 12.1. #3480 (2.4.2.1)
|
||||
- Support for gcc 12.1. #3480 (2.4.2.1) #3551 (2.4.4.0)
|
||||
- Support building with clang 15.0. #3563 (2.4.4.0)
|
||||
* Testing and Continuous integration (CI) systems:
|
||||
- Properly test against all the versions of VFX Platform 2022. #3074
|
||||
(2.4.0)
|
||||
@@ -688,6 +996,9 @@ Build/test system improvements and platform ports:
|
||||
- Improved simd.h support for armv7 and aarch32. #3361 (2.4.1.0/2.3.14)
|
||||
- Suppress MacOS wasnings about OpenGL deprecation. #3380 (2.4.1.0/2.3.14)
|
||||
- Fix MSVS/Windows errors. #3382 (2.4.1.1)
|
||||
- Fix cross-compiling on Android failing due to `-latomic` check. #3560
|
||||
(2.4.4.0)
|
||||
- Fix building on iOS. #3562 (2.4.4.0)
|
||||
|
||||
Notable documentation changes:
|
||||
* Add an oiiotool example of putting a border around an image. #3138
|
||||
@@ -708,6 +1019,24 @@ Notable documentation changes:
|
||||
|
||||
|
||||
|
||||
Release 2.3.21 (1 Nov 2022) -- compared to 2.3.20
|
||||
--------------------------------------------------
|
||||
* oiiotool: protect against OpenEXR thread deadlock on Windows. #3582
|
||||
* oiiotool: work around static destruction order issue. #3591
|
||||
* Fix PSD import on ARM. #3589
|
||||
* Docs: write Windows build instructions in INSTALL.md. #3602
|
||||
* RLA: fix potential buffer overrun. (TALOS-2022-1629, CVE-2022-36354) #3624
|
||||
* TIFF: guard against corrupt files with buffer overflows. (TALOS-2022-1627,
|
||||
CVE-2022-41977) #3628
|
||||
* TIFF: guard against buffer overflow for certain CMYK files.
|
||||
(TALOS-2022-1633, CVE-2022-41639) (TALOS-2022-1643, CVE-2022-41988) #3632
|
||||
|
||||
Release 2.3.20 (1 Oct 2022) -- compared to 2.3.19
|
||||
-------------------------------------------------
|
||||
* Fixes to compile with gcc 12. #3551
|
||||
* Fixes to compile with clang 15. #3563
|
||||
* PNG: better error handling when errors are encountered while writing. #3535
|
||||
|
||||
Release 2.3.19 (1 Sep 2022) -- compared to 2.3.18
|
||||
---------------------------------------------------
|
||||
* idiff: `--allowfailures` allows the specified number of pixels to differ by
|
||||
@@ -2486,7 +2815,7 @@ Release 2.1.11 (1 Feb 2020) -- compared to 2.1.10
|
||||
behind proper namespaces. #2473
|
||||
* Many docs fixes.
|
||||
|
||||
Release 2.1.10.1 (10 Jan 2019)
|
||||
Release 2.1.10.1 (10 Jan 2020)
|
||||
------------------------------
|
||||
* Automatically detect the need to link against libatomic (fixes build on
|
||||
some less common platforms, should not affect Windows, MacOS, or Linux on
|
||||
|
||||
+20
-5
@@ -1,20 +1,30 @@
|
||||
# Copyright 2008-present Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: BSD-3-Clause and Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
cmake_minimum_required (VERSION 3.12)
|
||||
project (OpenImageIO VERSION 2.4.2.2
|
||||
|
||||
set (OpenImageIO_VERSION "2.4.15.0")
|
||||
set (OpenImageIO_VERSION_OVERRIDE "" CACHE STRING
|
||||
"Version override (use with caution)!")
|
||||
mark_as_advanced (OpenImageIO_VERSION_OVERRIDE)
|
||||
if (OpenImageIO_VERSION_OVERRIDE)
|
||||
set (OpenImageIO_VERSION ${OpenImageIO_VERSION_OVERRIDE})
|
||||
endif ()
|
||||
|
||||
project (OpenImageIO VERSION ${OpenImageIO_VERSION}
|
||||
HOMEPAGE_URL "https://openimageio.org"
|
||||
LANGUAGES CXX C)
|
||||
|
||||
set (PROJ_NAME OIIO) # short name, caps
|
||||
string (TOLOWER ${PROJ_NAME} PROJ_NAME_LOWER) # short name lower case
|
||||
string (TOUPPER ${PROJ_NAME} PROJ_NAME_UPPER) # short name upper case
|
||||
set (PROJECT_VERSION_RELEASE_TYPE "dev" CACHE STRING
|
||||
set (PROJECT_VERSION_RELEASE_TYPE "" CACHE STRING
|
||||
"Build type, for example: dev, beta2, RC1 (empty string for normal release)")
|
||||
set (${PROJECT_NAME}_VERSION_RELEASE_TYPE ${PROJECT_VERSION_RELEASE_TYPE})
|
||||
set (PROJECT_AUTHORS "Contributors to the OpenImageIO project")
|
||||
option (${PROJECT_NAME}_SUPPORTED_RELEASE
|
||||
"Set ON for supported release branch, OFF for master" OFF)
|
||||
"Set ON for supported release branch, OFF for master" ON)
|
||||
if (${PROJECT_NAME}_SUPPORTED_RELEASE)
|
||||
set (${PROJECT_NAME}_DEV_RELEASE OFF)
|
||||
else ()
|
||||
@@ -63,6 +73,7 @@ message (STATUS "Project build dir = ${CMAKE_BINARY_DIR}")
|
||||
message (STATUS "Project install prefix = ${CMAKE_INSTALL_PREFIX}")
|
||||
message (STATUS "Configuration types = ${CMAKE_CONFIGURATION_TYPES}")
|
||||
message (STATUS "Build type = ${CMAKE_BUILD_TYPE}")
|
||||
message (STATUS "Supported release = ${${PROJECT_NAME}_SUPPORTED_RELEASE}")
|
||||
|
||||
# Make the build area layout look a bit more like the final dist layout
|
||||
set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
|
||||
@@ -111,6 +122,10 @@ set (TEX_BATCH_SIZE "" CACHE STRING "Force TextureSystem SIMD batch size (e.g. 1
|
||||
if (TEX_BATCH_SIZE)
|
||||
add_definitions ("-DOIIO_TEXTURE_SIMD_BATCH_WIDTH=${TEX_BATCH_SIZE}")
|
||||
endif ()
|
||||
option (OIIO_TEX_IMPLEMENT_VARYINGREF "Implement the deprecated batch texture functions taking VaryingRef params" ON)
|
||||
if (NOT OIIO_TEX_IMPLEMENT_VARYINGREF)
|
||||
add_definitions (-DOIIO_TEX_NO_IMPLEMENT_VARYINGREF=1)
|
||||
endif ()
|
||||
|
||||
# Set the default namespace
|
||||
set (${PROJ_NAME}_NAMESPACE ${PROJECT_NAME} CACHE STRING
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
# Code of Conduct
|
||||
|
||||
The OpenImageIO project abides by Linux Foundation's code of conduct, which
|
||||
you can read in full [here](https://lfprojects.org/policies/code-of-conduct).
|
||||
|
||||
To report incidents or to appeal reports of incidents, send email to
|
||||
the Manager of LF Projects at manager@lfprojects.org.
|
||||
+145
-72
@@ -1,56 +1,76 @@
|
||||
Contributing to OpenImageIO
|
||||
===========================
|
||||
|
||||
Code contributions to OpenImageIO are always welcome, and [nearly 150
|
||||
people](CREDITS.md) have done so over the years. Please review this
|
||||
document to get a briefing on our process.
|
||||
> NOTE: This is the proposed post-ASWF-move version of CONTRIBUTING. After the
|
||||
> project is legally transferred and moved to the new repo, this file will
|
||||
> replace the one at the project root.
|
||||
>
|
||||
> TO DO:
|
||||
>
|
||||
> - [X] Update the mail list sign-up page after the mail list moves.
|
||||
> - [ ] Update the repo URL
|
||||
> - [ ] Double check the security and info email addresses.
|
||||
>
|
||||
|
||||
Code contributions to OpenImageIO are always welcome, and [nearly 200
|
||||
people](https://github.com/OpenImageIO/oiio/blob/master/CREDITS.md) have done
|
||||
so over the years. Please review this document to get a briefing on our
|
||||
process.
|
||||
|
||||
|
||||
Mail Lists
|
||||
----------
|
||||
Mail List and Slack
|
||||
-------------------
|
||||
|
||||
There are two mail lists associated with OpenImageIO development:
|
||||
Contributors should be reading the oiio-dev mail list:
|
||||
|
||||
* [oiio-dev](http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org)
|
||||
* [oiio-dev](https://lists.aswf.io/g/oiio-dev)
|
||||
For developers of the OpenImageIO code itself, or users who are really
|
||||
interested in the OIIO internals. This is where we mostly discuss the code
|
||||
(including bug reports), but are also happy to answer user questions about
|
||||
use or working of OIIO.
|
||||
|
||||
* [oiio-announce](http://lists.openimageio.org/listinfo.cgi/oiio-announce-openimageio.org)
|
||||
For announcements about major OIIO releases or other important news.
|
||||
You can sign up for the mail list on your own using the link above.
|
||||
|
||||
You can sign up for these mail lists on your own using the links above.
|
||||
The [ASWF Slack](https://slack.aswf.io/) has an `openimageio` channel. Sign up
|
||||
for the Slack on your own, then under "channels", select "browse channels" and
|
||||
you should see the openimageio channel (among those of the other projects and
|
||||
working groups).
|
||||
|
||||
|
||||
How to Ask for Help
|
||||
-------------------
|
||||
|
||||
If you have trouble installing, building, or using OpenImageIO, but there's
|
||||
not yet reason to suspect you've encountered a genuine bug, start by posting
|
||||
a question to the
|
||||
[oiio-dev](http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org)
|
||||
mailing list. This is the place for question such has "How do I...".
|
||||
not yet a solid reason to suspect you've encountered a genuine bug, start by
|
||||
posting a question to the [oiio-dev mailing
|
||||
list](https://lists.aswf.io/g/oiio-dev).
|
||||
This is the place for questions such has "How do I...".
|
||||
|
||||
|
||||
Bug Reports and Issue Tracking
|
||||
------------------------------
|
||||
|
||||
We use GitHub's issue tracking system for bugs and enhancements:
|
||||
https://github.com/OpenImageIO/oiio/issues
|
||||
We use GitHub's issue tracking system for reporting bugs and requesting
|
||||
enhancements: https://github.com/OpenImageIO/oiio/issues
|
||||
|
||||
**If you are merely asking a question ("how do I...")**, please do not file an
|
||||
issue, but instead ask the question on the [oiio-dev mailing
|
||||
list](https://lists.aswf.io/g/oiio-dev).
|
||||
|
||||
If you are submitting a bug report, please be sure to note which version of
|
||||
OIIO you are using, on what platform (OS/version, which compiler you used,
|
||||
and any special build flags or other unusual environmental issues). Please
|
||||
give a specific an account of
|
||||
give a specific, as-detailed-as-possible account of
|
||||
|
||||
* what you tried
|
||||
* what happened
|
||||
* what you expected to happen instead
|
||||
* what you tried (command line, source code example)
|
||||
* what you expected to happen
|
||||
* what actually happened (crash? error message? ran but didn't give the
|
||||
correct result?)
|
||||
|
||||
with enough detail that others can reproduce the problem. Please quote the
|
||||
exact error message you received. If you are having trouble building, please
|
||||
post the full cmake output of a fresh VERBOSE=1 build.
|
||||
with enough detail that others can easily reproduce the problem just by
|
||||
following your instructions. Please quote the exact error message you
|
||||
received. If you are having trouble building, please post the full cmake
|
||||
output of a fresh VERBOSE=1 build.
|
||||
|
||||
Suspected security vulnerabilities should be reported by the same process.
|
||||
|
||||
@@ -61,29 +81,57 @@ may contact us privately at [security@openimageio.org](security@openimageio.org)
|
||||
Contributor License Agreement (CLA) and Intellectual Property
|
||||
-------------------------------------------------------------
|
||||
|
||||
To protect the project -- and the contributors! -- we do require a
|
||||
Contributor License Agreement (CLA) for anybody submitting substantial
|
||||
changes. Trivial changes (such as an alteration to the Makefiles, a one-line
|
||||
bug fix, etc.) may be accepted without a CLA, at the sole discretion of the
|
||||
project leader, but anything complex needs a CLA. This is for your own
|
||||
safety.
|
||||
To protect the project -- and the contributors! -- we do require a Contributor
|
||||
License Agreement (CLA) for anybody submitting changes. This is for your own
|
||||
safety, as it prevents any possible future disputes between code authors and
|
||||
their employers or anyone else who might think they might own the IP output of
|
||||
the author.
|
||||
|
||||
* If you are an individual writing the code on your own time and you're SURE
|
||||
you are the sole owner of any intellectual property you contribute, use the
|
||||
[Individual CLA](https://github.com/OpenImageIO/oiio/blob/master/src/doc/CLA-INDIVIDUAL).
|
||||
* [Corporate CLA](https://github.com/OpenImageIO/oiio/blob/master/ASWF/CLA-corporate.md) :
|
||||
If you are writing the code as part of your job, or if there is any
|
||||
possibility that your employers might think they own any intellectual
|
||||
property you create. This needs to be executed by someone who has
|
||||
signatory power for the company.
|
||||
|
||||
* If you are writing the code as part of your job, or if there is any
|
||||
possibility that your employers might think they own any intellectual
|
||||
property you create, then you should use the [Corporate
|
||||
CLA](https://github.com/OpenImageIO/oiio/blob/master/src/doc/CLA-CORPORATE).
|
||||
* [Individual CLA](https://github.com/OpenImageIO/oiio/blob/master/ASWF/CLA-individual.md) :
|
||||
If you are an individual writing the code on your own time, using your own
|
||||
equipment, and you're SURE you are the sole owner of any intellectual
|
||||
property you contribute.
|
||||
|
||||
Download the appropriate CLA from the links above (or find them in the
|
||||
src/doc directory of the software distribution), print, sign, and rescan it
|
||||
(or just add a digital signature directly), and email it back to us
|
||||
(info@openimageio.org).
|
||||
The easiest way to sign CLAs is digitally [using EasyCLA](https://corporate.v1.easycla.lfx.linuxfoundation.org).
|
||||
Companies who prefer not to use the online tools may sign, scan, and email
|
||||
the executed copy to manager@lfprojects.org.
|
||||
|
||||
Our CLA's are identical to those used by Apache and many other open source
|
||||
projects.
|
||||
The CLA allows a company to name a "CLA Manager" (who does not need
|
||||
signatory power) who has the ability to use the online system to add or
|
||||
delete individual employees of the company who are authorized to submit pull
|
||||
requests, without needing to get an executive to amend and sign the
|
||||
agreement each time.
|
||||
|
||||
Please note that these CLAs are based on the Apache 2.0 CLAs, and differ
|
||||
minimally, only as much as was required to correctly describe the EasyCLA
|
||||
process and our use of a CLA manager.
|
||||
|
||||
**Contribution sign off**
|
||||
|
||||
This project requires the use of the [Developer’s Certificate of Origin 1.1
|
||||
(DCO)](https://developercertificate.org/), which is the same mechanism that
|
||||
the [Linux®
|
||||
Kernel](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/submitting-patches.rst#n416)
|
||||
and many other communities use to manage code contributions. The DCO is
|
||||
considered one of the simplest tools for sign offs from contributors as the
|
||||
representations are meant to be easy to read and indicating signoff is done
|
||||
as a part of the commit message.
|
||||
|
||||
Here is an example Signed-off-by line, which indicates that the submitter
|
||||
accepts the DCO:
|
||||
|
||||
Signed-off-by: John Doe <john.doe@example.com>
|
||||
|
||||
You can include this automatically when you commit a change to your local
|
||||
git repository using `git commit -s`. You might also want to
|
||||
leverage this [command line tool](https://github.com/coderanger/dco) for
|
||||
automatically adding the signoff message on commits.
|
||||
|
||||
|
||||
Pull Requests and Code Review
|
||||
@@ -98,40 +146,61 @@ repository. The protocol is like this:
|
||||
1. Get a GitHub account, fork OpenImageIO/oiio to create your own repository
|
||||
on GitHub, and then clone it to get a repository on your local machine.
|
||||
|
||||
2. Edit, compile, and test your changes. Run clang-format (see the
|
||||
1. Edit, compile, and test your changes. Run clang-format (see the
|
||||
instructions on coding style below).
|
||||
|
||||
3. Push your changes to your fork (each unrelated pull request to a separate
|
||||
1. Push your changes to your fork (each unrelated pull request to a separate
|
||||
"topic branch", please).
|
||||
|
||||
4. Make a "pull request" on GitHub for your patch.
|
||||
1. Make a "pull request" on GitHub for your patch.
|
||||
|
||||
5. If your patch will induce a major compatibility break, or has a design
|
||||
2. If your patch will induce a major compatibility break, or has a design
|
||||
component that deserves extended discussion or debate among the wider OIIO
|
||||
community, then it may be prudent to email oiio-dev pointing everybody to
|
||||
the pull request URL and discussing any issues you think are important.
|
||||
|
||||
6. All pull requests automatically launch CI jobs on GitHub Actions to
|
||||
1. All pull requests automatically launch CI jobs on GitHub Actions to
|
||||
ensure that the build completes and that the tests suite runs correctly, for
|
||||
a variety of platform, compiler, library, and flag combinations. The status
|
||||
of the CI tests for your PR will be displayed on the GitHub PR page. We will
|
||||
not accept PRs that don't build cleanly or pass the existing testsuite.
|
||||
|
||||
7. The reviewer will look over the code and critique on the "comments" area.
|
||||
1. The reviewer will look over the code and critique on the "comments" area.
|
||||
Reviewers may ask for changes, explain problems they found, congratulate the
|
||||
author on a clever solution, etc. But until somebody says "LGTM" (looks good
|
||||
to me), the code should not be committed. Sometimes this takes a few rounds
|
||||
of give and take. Please don't take it hard if your first try is not
|
||||
accepted. It happens to all of us.
|
||||
|
||||
8. After approval, one of the senior developers (with commit approval to the
|
||||
1. After approval, one of the senior developers (with commit approval to the
|
||||
official main repository) will merge your fixes into the master branch.
|
||||
|
||||
|
||||
Coding Style
|
||||
------------
|
||||
|
||||
#### Formatting
|
||||
### File conventions
|
||||
|
||||
C++ implementation should be named `*.cpp`. Headers should be named `.h`.
|
||||
All headers should contain
|
||||
|
||||
#pragma once
|
||||
|
||||
All source files should begin with these three lines:
|
||||
|
||||
// Copyright Contributors to the OpenImageIO project.
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
// https://github.com/OpenImageIO/oiio
|
||||
|
||||
as a comment in the syntax of whatever source code is used in that file.
|
||||
|
||||
Occasionally a file may contain substantial code from another project and will
|
||||
also list its original copyright and license information. Do NOT alter that
|
||||
notice or copy it to any new files, it really only applies to the particular
|
||||
file in which it appears.
|
||||
|
||||
|
||||
### Formatting
|
||||
|
||||
We use [clang-format](https://clang.llvm.org/docs/ClangFormat.html)
|
||||
to uniformly format our source code prior to PR submission. Make sure that
|
||||
@@ -151,31 +220,35 @@ it on your end and update the PR with the formatting fixes.
|
||||
|
||||
If you don't have clang-format set up on your machine, and your patch is not
|
||||
very long, you may find that it's more convenient to just submit it and hope
|
||||
for the best, and if it doesn't pass the CI test, look at the diffs in
|
||||
the log and make the corrections by hand and then submit an update to the
|
||||
patch (i.e. relying on CI to run clang-format for you).
|
||||
for the best, and if it doesn't pass the CI test, look at the diffs in the log
|
||||
for the "clang-format" CI run and make the corrections by hand and then submit
|
||||
an update to the patch (i.e. relying on CI to run clang-format for you).
|
||||
|
||||
Because the basic formatting is automated by clang-format, we won't
|
||||
enumerate the rules here.
|
||||
|
||||
For the occasional non-clang-format regions of code, NEVER alter somebody
|
||||
else's code to reformat just because you found something that violates the
|
||||
rules. Let the group/author/leader know, and resist the temptation to change
|
||||
it yourself.
|
||||
|
||||
#### File conventions
|
||||
Each line of text in your code, including comments, should be at most 80
|
||||
characters long. Exceptions are allowed for those rare cases where letting a
|
||||
line be longer (and wrapping on an 80-character window) is actually a better
|
||||
and clearer alternative than trying to split it into two lines. Sometimes this
|
||||
happens, but it's extremely rare.
|
||||
|
||||
C++ implementation should be named `*.cpp`. Headers should be named `.h`.
|
||||
All headers should contain
|
||||
|
||||
#pragma once
|
||||
|
||||
All source files should begin with the copyright and license, which can be
|
||||
found in the LICENSE.md file (or cut and pasted from any other other source
|
||||
file).
|
||||
|
||||
For NEW source files, please change the copyright year to the present. DO
|
||||
NOT edit existing files only to update the copyright year, it just creates
|
||||
pointless deltas and offers no increased protection.
|
||||
We prefer three (3) consecutive empty lines between freestanding functions or
|
||||
class definitions, one blank line between method declarations within a class
|
||||
definition. Put a single blank line within a function if it helps to visually
|
||||
separate different sequential tasks, but don't put multiple blank lines in a
|
||||
row within a function, or blank lines right after an opening brace or right
|
||||
before a closing brace. The goal is to use just enough white space to help
|
||||
developers visually parse the code (for example, spotting at a glance where
|
||||
new functions begin), but not so much as to spread it out or be confusing.
|
||||
|
||||
|
||||
#### Identifiers
|
||||
### Identifiers
|
||||
|
||||
In general, classes and templates should start with upper case and
|
||||
capitalize new words: `class CustomerList;` In general, local variables
|
||||
@@ -195,7 +268,7 @@ Names of data should generally be nouns. Functions/methods are trickier: a
|
||||
the name of a function that returns a value but has no side effects should
|
||||
be a noun, but a procedure that performs an action should be a verb.
|
||||
|
||||
#### Class structure
|
||||
### Class structure
|
||||
|
||||
Try to avoid public data members, although there are some classes that serve
|
||||
a role similar to a simple C struct -- a very straightforward collection of
|
||||
@@ -215,21 +288,21 @@ Avoid multiple inheritance.
|
||||
|
||||
Namespaces: yes, use them!
|
||||
|
||||
#### Third-party libraries
|
||||
### Third-party libraries
|
||||
|
||||
Prefer C++11 `std` rather than Boost, where both can do the same task.
|
||||
Feel free to use Boost classes you already see in the code base, but don't
|
||||
use any Boost you don't see us already using, without first checking with
|
||||
the project leader.
|
||||
|
||||
Please do use IlmBase vector, matrix, and utility classes where applicable.
|
||||
Please do use Imath vector, matrix, and utility classes where applicable.
|
||||
Don't write your own vector or matrix code!
|
||||
|
||||
Use these libraries for OIIO internals, but please DO NOT require them in
|
||||
any of our main external APIs unless it's been thoroughly discussed and
|
||||
approved by the group.
|
||||
|
||||
#### Comments and Doxygen
|
||||
### Comments and Doxygen
|
||||
|
||||
Comment philosophy: try to be clear, try to help teach the reader what's
|
||||
going on in your code.
|
||||
@@ -245,7 +318,7 @@ They looks like this:
|
||||
float foo; ///< Doxygen comments on same line look like this
|
||||
}
|
||||
|
||||
#### Miscellaneous
|
||||
### Miscellaneous
|
||||
|
||||
Macros should be used only rarely -- prefer inline functions, templates,
|
||||
enums, or "const" values wherever possible.
|
||||
|
||||
+15
@@ -19,6 +19,7 @@ lg@openimageio.org
|
||||
* Aman Shah
|
||||
* Ananth Garre
|
||||
* Anders Langlands
|
||||
* Angus Davis
|
||||
* Anthony Nemoff
|
||||
* Aras Pranckevičius
|
||||
* Arkady Shapkin
|
||||
@@ -67,6 +68,7 @@ lg@openimageio.org
|
||||
* Fredrik Averpil
|
||||
* Frédéric Devernay
|
||||
* Gaurav Bansal
|
||||
* Gerdya
|
||||
* Ghislain Antony Vaillant
|
||||
* Gonzalo Garramuño
|
||||
* Gregor Mueckl
|
||||
@@ -81,16 +83,21 @@ lg@openimageio.org
|
||||
* Irena Damsky
|
||||
* Ismael Cortes
|
||||
* Jan Hettenkofer
|
||||
* Jan Honsbrok
|
||||
* Jens Lindgren
|
||||
* Jep Hill
|
||||
* Jeph Alapat
|
||||
* Jeremy Rose
|
||||
* Jeremy Selan
|
||||
* Jim Hourihan
|
||||
* Joachim Reichel
|
||||
* Johannes Unterguggenberger
|
||||
* John Burnett
|
||||
* John Fea
|
||||
* John Haddon
|
||||
* Jonathan Hearn
|
||||
* Jonathan Scruggs
|
||||
* Joris Nijs
|
||||
* Joseph Goldstone
|
||||
* Julien Enche
|
||||
* Justin Israel
|
||||
@@ -118,10 +125,13 @@ lg@openimageio.org
|
||||
* Mariusz Szczepanczyk
|
||||
* Mark Boorer
|
||||
* Mark Visser
|
||||
* Massimo Paladin
|
||||
* Matteo F. Vescovi
|
||||
* Matthew E. Levine
|
||||
* Max Liani
|
||||
* Merwan Achibet
|
||||
* Michael Cho
|
||||
* Michael Oliver
|
||||
* Michel Lerenard
|
||||
* Michel Normand
|
||||
* Mikael Sundell
|
||||
@@ -133,6 +143,7 @@ lg@openimageio.org
|
||||
* Nick Black
|
||||
* Nicolas Burtnyk
|
||||
* Nixon Kwok
|
||||
* Noah Rahm (designer of our logo!)
|
||||
* Northon Patrick
|
||||
* Nuno Cardoso
|
||||
* Ole Gulbrandsen
|
||||
@@ -146,6 +157,7 @@ lg@openimageio.org
|
||||
* Pete Larabell
|
||||
* Philip Nemec
|
||||
* Pino Toscano
|
||||
* Povilas Kanapickas
|
||||
* Puneet Jain
|
||||
* Radu Arjocu
|
||||
* Ramon Montoya
|
||||
@@ -156,6 +168,7 @@ lg@openimageio.org
|
||||
* Roeland Schoukens
|
||||
* Roman Zulak
|
||||
* Rui Li
|
||||
* Russell Greene
|
||||
* Ryen
|
||||
* Saket Jalan
|
||||
* Sam Richards
|
||||
@@ -177,10 +190,12 @@ lg@openimageio.org
|
||||
* Till Dechent
|
||||
* Tim D. Smith
|
||||
* Tim Grant
|
||||
* Tom Knowles
|
||||
* Troy James Sobotka
|
||||
* Vinod Khare
|
||||
* Vishal Agrawal
|
||||
* Vitor Franchi
|
||||
* Wayne Arnold
|
||||
* Will Rosecrans
|
||||
* William Krick
|
||||
* Wormszer
|
||||
|
||||
+215
@@ -0,0 +1,215 @@
|
||||
<!-- SPDX-License-Identifier: CC-BY-4.0 -->
|
||||
<!-- Copyright Contributors to the OpenImageIO Project. -->
|
||||
|
||||
# OpenImageIO Project Governance
|
||||
|
||||
OpenImageIO is a project of the Academy Software Foundation and relies on the
|
||||
ASWF governance policies, supported by the Linux Foundation.
|
||||
|
||||
There are three primary project roles: Contributors submit code to the
|
||||
project; Committers approve code to be included into the project; and the
|
||||
Technical Steering Committee (TSC) provides overall high-level project
|
||||
guidance.
|
||||
|
||||
* [Contributors](#Contributors)
|
||||
* [Committers](#Committers)
|
||||
* [Technical Steering Committee](#Technical-Steering-Committee)
|
||||
|
||||
## Contributors
|
||||
|
||||
The OpenImageIO project grows and thrives from assistance from Contributors.
|
||||
Contributors include anyone in the community who contributes code,
|
||||
documentation, or other technical artifacts that have been incorporated into
|
||||
the project repository.
|
||||
|
||||
Anyone can be a Contributor. You need no formal approval from the project,
|
||||
beyond the legal forms.
|
||||
|
||||
### How to Become a Contributor
|
||||
|
||||
* Review the coding standards and [contributing
|
||||
guidelines](../CONTRIBUTING.md) to ensure your contribution is in line with
|
||||
the project's coding and styling guidelines.
|
||||
|
||||
* Sign the Individual CLA, or if you are employed by an organization that
|
||||
might have any claim to IP you create, have your organization sign the
|
||||
Corporate CLA.
|
||||
|
||||
* Submit your code as a PR with the appropriate DCO sign-off on each commit.
|
||||
The easiest way to do this is to ensure that you commit your code with `git
|
||||
commit -s`.
|
||||
|
||||
## Committers
|
||||
|
||||
Project Committers have merge access on the OpenImageIO GitHub repository
|
||||
and are responsible for approving submissions by Contributors.
|
||||
|
||||
### Committer Responsibilities
|
||||
|
||||
Typical activities of a Committer include:
|
||||
|
||||
* Helping users and novice contributors.
|
||||
|
||||
* Ensuring a response to questions posted to the
|
||||
[Oiio-dev developer mail list](https://lists.aswf.io/g/oiio-dev)
|
||||
|
||||
* Contributing code and documentation changes that improve the project.
|
||||
|
||||
* Reviewing and commenting on issues and pull requests.
|
||||
|
||||
* Ensuring that changes and new code meet acceptable standards and are in
|
||||
the long-term interest of the project.
|
||||
|
||||
* Participation in working groups.
|
||||
|
||||
* Merging pull requests.
|
||||
|
||||
### How to Become a Committer
|
||||
|
||||
Any member of the OpenImageIO community (though typically an existing
|
||||
Committer or TSC member) may nominate an individual making significant and
|
||||
valuable contributions to the OpenImageIO project to become a new Committer.
|
||||
To nominate a new Committer, open an issue in the OpenImageIO repository, send
|
||||
mail to the TSC mail list, or raise the issue at a TSC meeting.
|
||||
|
||||
The TSC may periodically review the Committer list to identify inactive
|
||||
Committers. Past Committers are typically given Emeritus status. Emeriti may
|
||||
request that the TSC restore them to active Committer status.
|
||||
|
||||
## Technical Steering Committee
|
||||
|
||||
The Technical Steering Committee (TSC) has final authority over this project.
|
||||
As defined in the project charter, in addition to committer activities, TSC
|
||||
responsibilities also include, but are not limited to:
|
||||
|
||||
* Coordinating technical direction of the Project.
|
||||
|
||||
* Project governance and contribution policy.
|
||||
|
||||
* GitHub repository administration.
|
||||
|
||||
* Maintaining the list of additional Committers
|
||||
|
||||
* Appointing representatives to work with other open source or open
|
||||
standards communities.
|
||||
|
||||
* Discussions, seeking consensus, and where necessary, voting on technical
|
||||
matters relating to the code base that affect multiple projects.
|
||||
|
||||
* Coordinating any marketing, events, or communications regarding the
|
||||
project.
|
||||
|
||||
Within the TSC are two elected leadership roles to be held by its members
|
||||
and voted on annually. Any TSC member can express interest in serving in a
|
||||
role, or nominate another member to serve. There are no term limits, and one
|
||||
person may hold multiple roles simultaneously. Should a TSC member resign
|
||||
from a leadership role before their term is complete, a successor shall be
|
||||
elected through the standard nomination and voting process to complete the
|
||||
remainder of the term. The leadership roles are:
|
||||
|
||||
* **Chair**: This position acts as the project manager, organizing meetings
|
||||
and providing oversight to project administration.
|
||||
|
||||
* **Chief Architect**: This position makes all the final calls on design and
|
||||
technical decisions, and is responsible for avoiding "design by committee"
|
||||
pitfalls.
|
||||
|
||||
The chair role is assumed to rotate annually (though there are no term
|
||||
limits, so the TSC may reelect an existing chair). The chief architect
|
||||
position should be a source of stability and coherent design vision, so the
|
||||
TSC is encouraged to choose an architect who can serve for many years and
|
||||
only change architects when it is necessary for the health of the project
|
||||
and its community.
|
||||
|
||||
At the time of election, the TSC will also agree upon which of these two
|
||||
leaders will serve as the OpenImageIO ASWF (Academy Software Foundation) TAC
|
||||
(Technical Advisory Council) representative for the term. This member
|
||||
represents the project at all ASWF TAC meetings.
|
||||
|
||||
### TSC Members
|
||||
|
||||
Current voting members of the TSC are:
|
||||
|
||||
* **Chair and TAC representative**: Daniel Greenstein - Sony Pictures Imageworks (possibly interim?)
|
||||
* **Chief Architect**: Larry Gritz - Sony Pictures Imageworks
|
||||
* Anton Dukhovnikov - Wētā Digital / Unity
|
||||
* Jesse Yurkovich - Blender
|
||||
* Joseph Goldstone - ARRI
|
||||
* Lewis Wakeland - Disney TV Animation
|
||||
* Luke Emrose - Animal Logic (interim?)
|
||||
* Martin Davies - LAIKA
|
||||
* Robin Rowe - Heroic Robots
|
||||
* Thiago Ize - Autodesk
|
||||
|
||||
|
||||
### TSC Nomination and Succession
|
||||
|
||||
Any proposal for additional members of the TSC may be submitted by Committers,
|
||||
TSC members, or other major stakeholders of the OpenImageIO community by
|
||||
opening an issue outlining their case or raising the issue at a TSC meeting.
|
||||
New TSC members are accepted or rejected by majority vote of the TSC.
|
||||
|
||||
If a TSC member is for an extended period not regularly participating or
|
||||
performing the responsibilities expected of TSC members, the TSC may by
|
||||
majority vote request an alternate TSC member be submitted by that
|
||||
organization, or remove the inactive member from the TSC.
|
||||
|
||||
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.
|
||||
|
||||
TSC membership is presumed to be retained by the individual even if they
|
||||
change employers, provided they remain active in the project. The TSC may take
|
||||
action to ensure that organizational stakeholder representation not become
|
||||
severely disproportionate, for example by urging an organization that loses
|
||||
its sole TSC representative to nominate a new member, or by limiting the total
|
||||
number of voting members from any one organization if too many members all
|
||||
move to the same organization.
|
||||
|
||||
### TSC Meetings
|
||||
|
||||
Any meetings of the TSC are intended to be open to the public, except where
|
||||
there is a reasonable need for privacy. The TSC meets regularly in a voice
|
||||
conference call, at a cadence deemed appropriate by the TSC. The TSC Chair
|
||||
moderates the meeting, or appoints another TSC member to moderate in his or
|
||||
her absence. Meetings may also be streamed online where appropriate;
|
||||
connection details will be posted to the oiio-dev mail list in advance of the
|
||||
scheduled meeting.
|
||||
|
||||
The biweekly TSC meetings can be found on the [ASWF Calendar](https://www.aswf.io/meeting-calendar),
|
||||
just click on the OpenImageIO meeting entries to get the Zoom link.
|
||||
|
||||
Items are added to the TSC agenda which are considered contentious or are
|
||||
modifications of governance, contribution policy, TSC membership, or release
|
||||
process, in addition to topics involving the high-level technical direction
|
||||
of the project.
|
||||
|
||||
The intention of the agenda is not to approve or review all patches. That
|
||||
should happen continuously on GitHub and be handled by the larger group of
|
||||
Committers.
|
||||
|
||||
Any community member or Contributor can ask that something be reviewed by
|
||||
the TSC at the meeting by logging a GitHub issue. Any Committer, TSC member,
|
||||
or the meeting chair can bring the issue to the TSC's attention by applying
|
||||
the `TSC` label.
|
||||
|
||||
Prior to each TSC meeting, the meeting chair will share the agenda with
|
||||
members of the TSC. TSC members can also add items to the agenda at the
|
||||
beginning of each meeting. The meeting chair and the TSC cannot veto or
|
||||
remove items.
|
||||
|
||||
The TSC may invite additional persons to participate in a non-voting
|
||||
capacity.
|
||||
|
||||
The meeting chair is responsible for ensuring that minutes are taken and
|
||||
archived in the project repository or other designated accessible location.
|
||||
|
||||
Due to the challenges of scheduling a global meeting with participants in
|
||||
several time zones, the TSC will seek to resolve as many agenda items as
|
||||
possible outside of meetings on the public mailing list or through GitHub
|
||||
issues, discussions, and pull requests.
|
||||
+111
-25
@@ -14,67 +14,69 @@ NEW or CHANGED MINIMUM dependencies since the last major release are **bold**.
|
||||
|
||||
### Required dependencies -- OIIO will not build at all without these
|
||||
|
||||
* **C++14** (also builds with C++17, and C++20)
|
||||
* C++14 (also builds with C++17, and C++20)
|
||||
* The default build mode is C++14. This can be controlled by via the
|
||||
CMake configuration flag: `-DCMAKE_CXX_STANDARD=17`, etc.
|
||||
* Compilers: **gcc 6.1 - 12.1**, **clang 3.4 - 14**, **MSVS 2017 - 2019**,
|
||||
**Intel icc 17+**, **Intel OneAPI C++ compiler 2022+**.
|
||||
* CMake >= 3.12 (tested through 3.24)
|
||||
* OpenEXR/Imath >= 2.3 (recommended: 2.4 or higher; tested through 3.1)
|
||||
* libTIFF >= 3.9 (recommended: 4.0+; tested through 4.4)
|
||||
* Compilers: gcc 6.1 - 12.1, clang 3.4 - 16, MSVS 2017 - 2019,
|
||||
Intel icc 17+, **Intel OneAPI C++ compiler 2022+**.
|
||||
* CMake >= 3.12 (tested through 3.26)
|
||||
* **OpenEXR/Imath >= 2.3** (recommended: 2.4 or higher; tested through 3.2 and main)
|
||||
* libTIFF >= 3.9 (recommended: 4.0+; tested through 4.5)
|
||||
* libjpeg >= 8, or libjpeg-turbo >= 1.1 (tested through jpeg9d and jpeg-turbo
|
||||
2.1)
|
||||
* Boost >= 1.53 (recommended: at least 1.66; tested through 1.80)
|
||||
* [fmtlib](https://github.com/fmtlib/fmt) >= 6.1.2 (tested through 9.1). If
|
||||
* Boost >= 1.53 (recommended: at least 1.66; tested through 1.81)
|
||||
* [fmtlib](https://github.com/fmtlib/fmt) >= 6.1.2 (tested through 10.0). If
|
||||
not found at build time, this will be automatically downloaded unless the
|
||||
build sets `-DBUILD_MISSING_FMT=OFF`.
|
||||
|
||||
### Optional dependencies -- features may be disabled if not found
|
||||
* If you are building the `iv` viewer (which will be disabled if any of
|
||||
these are not found):
|
||||
* Qt >= 5.6 (tested through 5.15)
|
||||
* Qt5 >= 5.6 (tested through 5.15) or Qt6 (tested through 6.4)
|
||||
* OpenGL
|
||||
* If you are building the Python bindings or running the testsuite:
|
||||
* Python >= 2.7 (tested against 2.7, 3.7, 3.8, 3.9, 3.10)
|
||||
* pybind11 >= 2.4.2 (Tested through 2.10. Note that pybind11 v2.10+ does
|
||||
* Python >= 2.7 (tested against 2.7, 3.7, 3.8, 3.9, 3.10, 3.11)
|
||||
* pybind11 >= 2.4.2 (Tested through 2.11. Note that pybind11 v2.10+ does
|
||||
not support Python < 3.6.)
|
||||
* NumPy
|
||||
* If you want support for camera "RAW" formats:
|
||||
* LibRaw >= 0.15 (tested 0.15 - 0.20.2; LibRaw >= 0.18 is necessary for
|
||||
* LibRaw >= 0.15 (tested 0.15 - 0.21.1; LibRaw >= 0.18 is necessary for
|
||||
ACES support and much better recognition of camera metadata; if
|
||||
building with C++17 or higher, LibRaw >= 0.20 is necessary)
|
||||
* If you want support for a wide variety of video formats:
|
||||
* **ffmpeg >= 3.0** (tested through 5.1)
|
||||
* ffmpeg >= 3.0 (tested through 6.0)
|
||||
* If you want support for jpeg 2000 images:
|
||||
* **OpenJpeg >= 2.0** (tested through 2.5; we recommend 2.4 or higher
|
||||
* OpenJpeg >= 2.0 (tested through 2.5; we recommend 2.4 or higher
|
||||
for multithreading support)
|
||||
* If you want support for OpenVDB files:
|
||||
* OpenVDB >= 5.0 (tested through 9)
|
||||
* OpenVDB >= 5.0 (tested through 10.0)
|
||||
* If you want to use TBB as the thread pool:
|
||||
* TBB >= 2018 (tested through 2021)
|
||||
* TBB >= 2018 (tested through 2021 and OneTBB)
|
||||
* If you want support for converting to and from OpenCV data structures,
|
||||
or for capturing images from a camera:
|
||||
* **OpenCV 3.x, or 4.x** (tested through 4.5)
|
||||
* OpenCV 3.x, or 4.x (tested through 4.5)
|
||||
* If you want support for GIF images:
|
||||
* giflib >= 4.1 (tested through 5.2; 5.0+ is strongly recommended for
|
||||
stability and thread safety)
|
||||
* If you want support for HEIF/HEIC or AVIF images:
|
||||
* libheif >= 1.3 (1.7 required for AVIF support, tested through 1.12)
|
||||
* libheif >= 1.3 (1.7 required for AVIF support, tested through 1.16)
|
||||
* libheif must be built with an AV1 encoder/decoder for AVIF support.
|
||||
* Avoid libheif 1.10 on Mac, it is very broken. Libheif 1.11 is fine.
|
||||
* Avoid libheif 1.10 on Mac, it is very broken. Libheif 1.11+ is fine.
|
||||
* If you want support for DICOM medical image files:
|
||||
* DCMTK >= 3.6.1 (tested through 3.6.6)
|
||||
* DCMTK >= 3.6.1 (tested through 3.6.7)
|
||||
* If you want support for WebP images:
|
||||
* WebP >= 0.6.1 (tested through 1.2.1)
|
||||
* WebP >= 0.6.1 (tested through 1.3.1)
|
||||
* If you want support for OpenColorIO color transformations:
|
||||
* OpenColorIO >= 1.1 (tested through 2.1; 2.0+ is recommended)
|
||||
* OpenColorIO >= 1.1 (tested through 2.3; 2.0+ is recommended)
|
||||
* If you want support for Ptex:
|
||||
* Ptex >= 2.3.1 (probably works for older; tested through 2.4.2)
|
||||
* If you want to be able to do font rendering into images:
|
||||
* Freetype (minimum unknown, tested 2.8 through 2.13)
|
||||
* We use PugiXML for XML parsing. There is a version embedded in the OIIO
|
||||
tree, but if you want to use an external, system-installed version (as
|
||||
may be required by some software distributions with policies against
|
||||
embedding other projects), then just build with `-DUSE_EXTERNAL_PUGIXML=1`.
|
||||
Any PugiXML >= 1.8 should be fine (we have tested through 1.12).
|
||||
Any PugiXML >= 1.8 should be fine (we have tested through 1.13).
|
||||
|
||||
|
||||
|
||||
@@ -268,8 +270,92 @@ Building on Windows
|
||||
|
||||
**Method 1 - from source**
|
||||
|
||||
I really need someone to write correct, modern docs about how to build
|
||||
from source on Windows.
|
||||
You will need to have Git, CMake and Visual Studio installed.
|
||||
|
||||
The minimal set of dependencies for OIIO is: Boost, zlib, libTIFF, OpenEXR, and libjpeg or libjpeg-turbo. If you have them built somewhere then you skip
|
||||
the section below, and will only have to point OIIO build process so their locations.
|
||||
|
||||
* Boost: get the boost source archive, extract into `{BOOST_ROOT}`.
|
||||
```
|
||||
cd {BOOST_ROOT}
|
||||
bootstrap
|
||||
b2
|
||||
```
|
||||
* zlib: this will build it, and then delete the non-static library, so they don't get picked up:
|
||||
```
|
||||
cd {ZLIB_ROOT}
|
||||
git clone https://github.com/madler/zlib .
|
||||
mkdir build
|
||||
cd build
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=. ..
|
||||
cmake --build . --config Release --target install
|
||||
del lib\zlib.lib
|
||||
```
|
||||
* libTIFF:
|
||||
```
|
||||
cd {TIFF_ROOT}
|
||||
git clone https://gitlab.com/libtiff/libtiff.git .
|
||||
cd build
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=. ..
|
||||
cmake --build . --target install
|
||||
```
|
||||
* libjpeg-turbo:
|
||||
```
|
||||
cd {JPEG_ROOT}
|
||||
git clone https://github.com/libjpeg-turbo/libjpeg-turbo .
|
||||
mkdir build
|
||||
cd build
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_SHARED=OFF -DCMAKE_INSTALL_PREFIX=. ..
|
||||
cmake --build . --config Release --target install
|
||||
```
|
||||
* OpenEXR: you'll have to point it to your `{ZLIB_ROOT}` location from the above. If copy-pasting the multi-line command (with lines ending in `^`) into
|
||||
cmd.exe prompt, make sure to copy all the lines at once.
|
||||
```
|
||||
cd {EXR_ROOT}
|
||||
git clone https://github.com/AcademySoftwareFoundation/openexr .
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=dist ^
|
||||
-DBUILD_TESTING=OFF -DBUILD_SHARED_LIBS=OFF -DOPENEXR_BUILD_TOOLS=OFF ^
|
||||
-DOPENEXR_INSTALL_TOOLS=OFF -DOPENEXR_INSTALL_EXAMPLES=OFF ^
|
||||
-DZLIB_ROOT={ZLIB_ROOT}\build ..
|
||||
cmake --build . --target install --config Release
|
||||
```
|
||||
|
||||
Now get the OIIO source and do one-time CMake configuration step. Replace `{*_ROOT}` below with folders where you have put the 3rd party
|
||||
dependencies.
|
||||
```
|
||||
cd {OIIO_ROOT}
|
||||
git clone https://github.com/OpenImageIO/oiio .
|
||||
mkdir build
|
||||
cd build
|
||||
cmake -DVERBOSE=ON -DCMAKE_BUILD_TYPE=Release ^
|
||||
-DBoost_USE_STATIC_LIBS=ON -DBoost_NO_WARN_NEW_VERSIONS=ON -DBoost_ROOT={BOOST_ROOT} ^
|
||||
-DZLIB_ROOT={ZLIB_ROOT}\build ^
|
||||
-DTIFF_ROOT={TIFF_ROOT}\build ^
|
||||
-DOpenEXR_ROOT={EXR_ROOT}\build\dist ^
|
||||
-DImath_DIR={EXR_ROOT}\build\dist\lib\cmake\Imath ^
|
||||
-DJPEG_ROOT={JPEG_ROOT}\build ^
|
||||
-DUSE_PYTHON=0 -DUSE_QT=0 -DBUILD_SHARED_LIBS=0 -DLINKSTATIC=1 ..
|
||||
```
|
||||
|
||||
This will produce `{OIIO_ROOT}/build/OpenImageIO.sln` that can be opened in Visual Studio IDE. Note that the solution will be
|
||||
only for the Intel x64 architecture only; and will only target "min-spec" (SSE2) SIMD instruction set.
|
||||
|
||||
Optional packages that OIIO can use (e.g. libpng, Qt) can be build and pointed to OIIO build process in a similar way.
|
||||
|
||||
In Visual Studio, open `{OIIO_ROOT}/build/OpenImageIO.sln` and pick Release build configuration. If you pick Debug, you
|
||||
might need to re-run the CMake command above with `-DCMAKE_BUILD_TYPE=Debug` and also have all the dependencies above built
|
||||
with `Debug` config too.
|
||||
|
||||
The main project that builds the library is `OpenImageIO`. The library is built into `{OIIO_ROOT}/build/lib/{CONFIG}` folder.
|
||||
The various OIIO command line tools (`oiiotool`, `iconvert` etc.) are projects under Tools subfolder in VS IDE solution explorer.
|
||||
They all build into `{OIIO_ROOT}/build/bin/{CONFIG}` folder.
|
||||
|
||||
There's a `CMakePredefinedTargets/INSTALL` project that you can build to produce a `{OIIO_ROOT}/dist` folder with `bin`, `include`,
|
||||
`lib`, `share` folders as an OIIO distribution.
|
||||
|
||||
The instructions above use options for building statically-linked OIIO library and tools. Adjust options passed to CMake to
|
||||
produce a dynamic-linked version.
|
||||
|
||||
|
||||
**Method 2 - Using vcpkg**
|
||||
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
Copyright (c) 2008-present by Contributors to the OpenImageIO project.
|
||||
All Rights Reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
3. Neither the name of the copyright holder nor the names of its
|
||||
contributors may be used to endorse or promote products derived from
|
||||
this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
+196
-22
@@ -1,27 +1,201 @@
|
||||
Copyright (c) 2008-present by Contributors to the OpenImageIO project.
|
||||
All Rights Reserved.
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
1. Definitions.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
3. Neither the name of the copyright holder nor the names of its
|
||||
contributors may be used to endorse or promote products derived from
|
||||
this software without specific prior written permission.
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
#
|
||||
# Run 'make help' to list helpful targets.
|
||||
#
|
||||
# Copyright 2008-present Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: BSD-3-Clause and Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
#########################################################################
|
||||
|
||||
@@ -312,7 +312,16 @@ test: build
|
||||
cd ${build_dir} ; \
|
||||
lcov -b . -d . -c -o cov.info ; \
|
||||
lcov --remove cov.info "/usr*" -o cov.info ; \
|
||||
genhtml -o ./cov -t "Test coverage" --num-spaces 4 cov.info ; \
|
||||
lcov --remove cov.info "*/usr/incude" -o cov.info ; \
|
||||
lcov --remove cov.info "/Library/Developer/*" -o cov.info ; \
|
||||
lcov --remove cov.info "*/detail/pugixml/*" -o cov.info ; \
|
||||
lcov --remove cov.info "*/detail/fmt/*" -o cov.info ; \
|
||||
lcov --remove cov.info "*/detail/farmhash.h" -o cov.info ; \
|
||||
lcov --remove cov.info "*/v1/*" -o cov.info ; \
|
||||
lcov --remove cov.info "*/ext/robin-map/*" -o cov.info ; \
|
||||
lcov --remove cov.info "*/kissfft.hh" -o cov.info ; \
|
||||
lcov --remove cov.info "*/stb_sprintf.h" -o cov.info ; \
|
||||
genhtml -o ../_coverage -t "Test coverage" --num-spaces 4 cov.info ; \
|
||||
fi )
|
||||
|
||||
# 'make testall' does a full build and then runs all tests (even the ones
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
README for OpenImageIO
|
||||
======================
|
||||
<p align="center">
|
||||
<img src="ASWF/logos/openimageio-horizontal-gradient.png">
|
||||
</p>
|
||||
|
||||
[](https://github.com/OpenImageIO/oiio/blob/master/LICENSE.md)
|
||||
[](https://github.com/OpenImageIO/oiio/blob/master/LICENSE.md)
|
||||
[](https://github.com/OpenImageIO/oiio/actions/workflows/ci.yml)
|
||||
[](https://bestpractices.coreinfrastructure.org/projects/2694)
|
||||
|
||||
@@ -67,10 +68,13 @@ Licensing
|
||||
|
||||
OpenImageIO is (c) Copyright Contributors to the OpenImageIO project.
|
||||
|
||||
OpenImageIO is distributed using the [modified BSD license](LICENSE.md)
|
||||
(also known as the "new BSD" or "3-clause BSD" license). The documentation
|
||||
is licensed under the [Creative Commons Attribution 3.0 Unported
|
||||
License](http://creativecommons.org/licenses/by/3.0/).
|
||||
OpenImageIO is distributed using primarily the Apache 2.0 license -- see the
|
||||
[LICENSE.md](LICENSE.md) file for details. The documentation is licensed
|
||||
under the [Creative Commons Attribution 4.0 Unported
|
||||
License](http://creativecommons.org/licenses/by/4.0/). A small amount of code
|
||||
imported from other projects, and also some pre-July-2023 code that has not
|
||||
yet been relicensed under Apache-2.0, is covered by other compatible licenses
|
||||
-- see [THIRD-PARTY](THIRD-PARTY.md) file for details.
|
||||
|
||||
The plain English bottom line is that OpenImageIO is free, as well as
|
||||
freely modifiable and redistributable (in both source and binary form).
|
||||
@@ -110,7 +114,7 @@ Contact & reporting problems
|
||||
|
||||
Simple "how do I...", "I'm having trouble", or "is this a bug" questions are
|
||||
best asked on the [oiio-dev developer mail
|
||||
list](http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org).
|
||||
list](https://lists.aswf.io/g/oiio-dev).
|
||||
That's where the most people will see it and potentially be able to answer
|
||||
your question quickly (more so than a GH "issue").
|
||||
|
||||
@@ -127,7 +131,7 @@ security-related issues [security@openimageio.org](security@openimageio.org).
|
||||
Contributing
|
||||
------------
|
||||
|
||||
OpenImageIO welcomes code contributions, and [nearly 150 people](CREDITS.md)
|
||||
OpenImageIO welcomes code contributions, and [nearly 200 people](CREDITS.md)
|
||||
have done so over the years. We take code contributions via the usual GitHub
|
||||
pull request (PR) mechanism. Please see [CONTRIBUTING](CONTRIBUTING.md) for
|
||||
detailed instructions.
|
||||
@@ -141,5 +145,10 @@ Web Resources
|
||||
* GitHub page: http://github.com/OpenImageIO/oiio
|
||||
|
||||
* Developer mail list subscriptions and archives:
|
||||
http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org
|
||||
https://lists.aswf.io/g/oiio-dev
|
||||
|
||||
* ASWF Slack: https://slack.aswf.io
|
||||
(look for the `#openimageio` channel)
|
||||
|
||||
* Biweekly TSC meetings are on the ASWF Calendar: https://www.aswf.io/meeting-calendar/
|
||||
(click on the OpenImageIO meeting entries, every second Monday, to get the Zoom link, anyone may join)
|
||||
|
||||
+352
@@ -0,0 +1,352 @@
|
||||
<!-- SPDX-License-Identifier: CC-BY-4.0 -->
|
||||
<!-- Copyright Contributors to the OpenImageIO Project. -->
|
||||
|
||||
# Release Procedures for OpenImageIO
|
||||
|
||||
## Version nomenclature and release cadence
|
||||
|
||||
### The meaning of the version parts
|
||||
|
||||
Our release numbers are of the form `MAJOR.MINOR.PATCH.TWEAK`, and we follow
|
||||
an almost-semantic-versioning scheme.
|
||||
|
||||
MAJOR changes are those that break backward-compatibility of the public APIs,
|
||||
requiring existing application code to change their source code where it calls
|
||||
OIIO API functions in order to compile and work correctly.
|
||||
|
||||
MINOR changes guarantee API backward-compatibility with prior releases that
|
||||
have the same major number, but can introduce ABI or link incompatibilities.
|
||||
Applications using OIIO need to be recompiled to move to a new minor release,
|
||||
but should not need to change their source code. Minor releases are allowed
|
||||
to drop support for sufficiently old compilers and dependencies.
|
||||
|
||||
PATCH changes guarantee both API and ABI/link backward-compatibility with
|
||||
prior releases that have the same minor number. Features and new public API
|
||||
calls may be added (thus deviating from strict semantic versioning), but only
|
||||
if they preserve ABI/link compatibility. This means that standalone functions
|
||||
or static methods may be added, but existing functions will not change their
|
||||
parameters, and no new virtual methods or struct data layouts change for patch
|
||||
releases (for classes in public header files). Application code can be
|
||||
re-linked to a new patch release without needing to be recompiled. We also
|
||||
guarantee that any compilers or dependencies supported for the first release
|
||||
of a minor series will continue to be supported for all patches to that minor
|
||||
series.
|
||||
|
||||
TWEAK changes are restricted to critical bug fixes or build breaks that do
|
||||
not alter public APIs in any way.
|
||||
|
||||
### Cadence of releases
|
||||
|
||||
Major (arbitrarily incompatible) releases happen rarely, usually with multiple
|
||||
years between them.
|
||||
|
||||
Minor (API backward-compatible) releases are scheduled annually, targeted at
|
||||
late summer (SIGGRAPH time) to be in beta, and early autumn for a full
|
||||
release.
|
||||
|
||||
Patch (API and ABI backward-compatible) releases are scheduled monthly,
|
||||
usually aiming for the first day of each month.
|
||||
|
||||
Tweak (fully forward and backward compatible) releases are not regularly
|
||||
scheduled, and only happen sporadically, when a critical fix is needed in
|
||||
between scheduled patch releases.
|
||||
|
||||
### Things are different in "master"
|
||||
|
||||
The "master" branch is where ongoing development occurs without any
|
||||
compatibility guarantees. We don't always know if the next year's release from
|
||||
master will turn out to be major (API breaking) or minor (only ABI breaking).
|
||||
|
||||
Some studios or products need the most up-to-date enhancements, and thus tend
|
||||
to build OIIO from the "master" branch rather than using tagged releases. For
|
||||
these users, we try to set version numbers and occasionally tag in master, to
|
||||
send a signal about which points in master seem safe to rely on various
|
||||
compatibility levels. However, the rules are slightly different than we use
|
||||
for releases.
|
||||
|
||||
In the "master" branch:
|
||||
|
||||
- TWEAK changes within "master" only guarantee ABI back-compatibility, but may
|
||||
have additions or non-bug-fix behavior changes (akin to patch releases
|
||||
within a release branch).
|
||||
- PATCH changes within "master" are allowed to break ABI or API (changes that
|
||||
would require minor or major releases, if they were not in "master").
|
||||
- Beware of unmarked breaks in compatibility of commits in master that are
|
||||
in between developer preview tags.
|
||||
|
||||
|
||||
---
|
||||
|
||||
## Branch and tag names
|
||||
|
||||
**Branches** are places where commits containing new development may be added
|
||||
(and thus the branch markers will move over time). Branch names obey the
|
||||
following conventions:
|
||||
|
||||
- `master` is the area for arbitrary changes intended for the next year's
|
||||
major or minor release.
|
||||
- `dev-1.2` are the areas for staging additions to the next month's patch
|
||||
release for the designated minor version series.
|
||||
- `release` is a special branch marker that is always set to the latest tag of
|
||||
the currently supported, stable release family. People can count on
|
||||
"release" always being the latest stable release, whatever that may be at
|
||||
the time.
|
||||
|
||||
**Tags** indicate releases or developer previews, and once a commit is
|
||||
tagged, it is permanent and will never be moved. Tag names obey the following
|
||||
conventions:
|
||||
|
||||
- `v1.2.3.4` is a specific public stable release, corresponding to official
|
||||
major, minor, public, or tweak releases.
|
||||
- `v1.2.3.4-alpha`, `v1.2.3.4-beta`, or `v1.2.3.4-RC1` are pre-releases for an
|
||||
upcoming public stable release, at the alpha, beta, or release candidate
|
||||
stages, respectively.
|
||||
- `v1.2.3.4-dev` is a "developer preview" within "master." It is not an official
|
||||
supported release, and while the numbering may indicate compatibility versus
|
||||
other recent developer previews, they should not be assumed to be compatible
|
||||
with any prior official stable releases.
|
||||
|
||||
*Very* occasionally, other branch or tag names (with custom suffixes or
|
||||
different naming schemes) may be used for special purposes by particular
|
||||
developers or users, but should not be considered reliable or permanent, and
|
||||
in general should be ignored by anyone who didn't make the tag or branch.
|
||||
|
||||
---
|
||||
|
||||
## Release Procedures
|
||||
|
||||
### Soft freeze for monthly tweak releases:
|
||||
|
||||
We freely backport *safe*, non-ABI-breaking changes by cherry-picking them
|
||||
from master to the supported branch continually throughout most of the month.
|
||||
|
||||
In the seven days before the new month, we do a "soft freeze" where only
|
||||
important bug fixes are backported. Hold on to any other patches you wish to
|
||||
backport until after the monthly patch release (i.e., save them for the next
|
||||
month's release so you never have a release that contains changes that are
|
||||
only a few days old, and therefore not as well tested). You may, of course,
|
||||
continue to backport fixes to documentation or other non-code parts of the
|
||||
project during this soft freeze.
|
||||
|
||||
### Branching for annual major/minor releases
|
||||
|
||||
By mid-June (about 1-2 months before the beta of a new annual big release),
|
||||
you should branch and mark it as an alpha.
|
||||
|
||||
At the tip of "master", create a new branch named `dev-MAJOR.MINOR` that will
|
||||
be the staging area for the next release.
|
||||
|
||||
Customarily, at that point we add a commit to master (but not to the new
|
||||
dev-MAJ.MIN branch) that bumps master's version to the next minor level, to
|
||||
avoid any confusion between builds from master versus what will be the next
|
||||
release branch. This starts the divergence between master and the release
|
||||
branch, and henceforth, any big or compatibility-breaking changes will only be
|
||||
committed to master and not backported to the release branch. (Though we are
|
||||
loose about this rule during the alpha period and allow continued breaking
|
||||
changes in the alpha, but by the time we call it beta, we allow no more
|
||||
breaking changes.) Also at this stage, the master branch's CHANGES.md should
|
||||
have a heading added at the top for the *next* version.
|
||||
|
||||
|
||||
### Prior to a release
|
||||
|
||||
1. Update CI dependencies: Ensure that the "latest" CI test specifies the
|
||||
current releases of the dependencies and compilers (check their home
|
||||
pages), and that the [INSTALL.md](../INSTALL.md) file correctly documents
|
||||
the version ranges that we expect to work and that we actively test.
|
||||
|
||||
2. Release notes: [CHANGES.md](../CHANGES.md) should be updated to reflect
|
||||
all the new features and fixes. Looking at the notes from older releases
|
||||
should provide a good example of what we're aiming for.
|
||||
|
||||
- Patch and tweak releases can be brief one-line descriptions (often the
|
||||
first line of the commit messages involved), presented in a single
|
||||
section in either chronological or any other order that seems right.
|
||||
- Minor or major releases have a much more extensive, prose-based
|
||||
description of all changes since the last minor release, broken into
|
||||
sections (dependency changes, major new features, enhancements and fixes,
|
||||
internals and developer goodies, testing/CI/ports, etc.) and ordered for
|
||||
readability and relevance.
|
||||
|
||||
3. Ensure docs are up to date:
|
||||
|
||||
- Actually read the [README.md](README.md), [INSTALL.md](INSTALL.md),
|
||||
and other repository docs and make sure all the information is up to
|
||||
date. Check the [CREDITS.md](CREDITS.md) against the recent repo history
|
||||
to be sure new contributors are listed.
|
||||
- Skim the primary user documentation to look for any obvious errors,
|
||||
especially the parts that describe new features.
|
||||
- If we are using any online docs (like readthedocs), make sure it is
|
||||
building and looks correct on the web site.
|
||||
|
||||
4. Make sure the the top-level CMakeLists.txt file is updated:
|
||||
|
||||
- The `OpenImageIO_VERSION` should be correct.
|
||||
- The `PROJECT_VERSION_RELEASE_TYPE` variable should be set to "alpha" or
|
||||
"beta" if appropriate, "RC" for release candidate, or empty string `""`
|
||||
for most supported releases, and "dev" only for the master branch or
|
||||
developer previews.
|
||||
- The `${PROJECT_NAME}_SUPPORTED_RELEASE` variable should be `ON` for any
|
||||
release branch, `OFF` for master.
|
||||
|
||||
5. In the https://github.com/OpenImageIO/oiio-images project, create a branch
|
||||
`RB-x.y` for the major/minor branch, and in the main oiio repo, update
|
||||
src/build-scripts/install_test_images.bash to specify `-b RB-x.y` in the
|
||||
checkout of oiio-images to ensure CI tests are against the set of test
|
||||
images corresponding to that major/minor release (just in the branch, not
|
||||
in master!).
|
||||
|
||||
6. Make sure everything passes the usual CI workflow. Also check the daily or
|
||||
weekly "analysis" workflows to make sure there aren't any important
|
||||
warnings that should be fixed.
|
||||
|
||||
|
||||
### Staging alpha / beta / release candidate (annual minor/major releases only)
|
||||
|
||||
For monthly patch releases, we don't have any formal alpha/beta/RC stages.
|
||||
|
||||
For the annual minor or major releases we have a staged release:
|
||||
|
||||
- `alpha` is everything after we have branched, in which we think all the big
|
||||
new features have been added, and while we will make continued changes and
|
||||
fixes, we are aiming for increased stability and to minimize additional
|
||||
breaking changes prior to the release.
|
||||
- `beta` should be about one month prior to the final release date. We create
|
||||
a tag `v1.2.3.4-beta` and announce the beta (see below "Making the
|
||||
release"). Once we tag a beta, we try very hard not to allow any further
|
||||
changes that change the API or are not ABI-compatible (i.e., safe fixes
|
||||
only).
|
||||
- `RC` or release candidates around one week prior to the final release date.
|
||||
This is a trial run, hopefully identical to the final release (except for
|
||||
removing the RC label and making a new tag). The only changes allowed after
|
||||
RC are fixes to the most critical bugs or build breaks that would be bad for
|
||||
users to encounter. If critical problems are found with RC1, they should be
|
||||
fixed and immediately re-tagged as RC2, etc. All other fixes should be
|
||||
postponed until the next month's patch release.
|
||||
|
||||
### Making the release
|
||||
|
||||
A final release is made on the scheduled date, provided the latest RC has
|
||||
survived for at least a few days of testing without finding any critical
|
||||
problems. Don't make the release final until you are sure there are no
|
||||
truly critical bugs or build breaks that users will encounter.
|
||||
|
||||
The following are the steps for making the release:
|
||||
|
||||
1. Edit the top-level CMakeLists.txt to remove any RC designation
|
||||
(i.e., `PROJECT_VERSION_RELEASE_TYPE` should be set to `""`).
|
||||
|
||||
2. Edit CHANGES.md to reflect the correct date of the release and ensure it
|
||||
includes any last-minute changes that were made during beta or release
|
||||
candidate stages.
|
||||
|
||||
3. Push it to **your** GitHub, make sure it passes CI.
|
||||
|
||||
4. Tag the release: `git tag v1.2.3.4` (no more beta, RC, or dev suffix).
|
||||
|
||||
5. If this will now be the recommended stable release, move the `release`
|
||||
branch marker to the same position.
|
||||
|
||||
6. Push it to GitHub: `git push OpenImageIO release --tags`
|
||||
|
||||
(This example assumes "OpenImageIO" is the name of the remote for the
|
||||
GitHub `OpenImageIO/oiio` repo.)
|
||||
|
||||
7. Draft a release on GitHub: On https://github.com/OpenImageIO/oiio/releases
|
||||
select "Draft a new release." Choose the new tag you just pushed. Make the
|
||||
release title "OpenImageIO v1.2.3.4" (and beta, etc., designation
|
||||
if applicable). In the description, paste the release notes for this
|
||||
release (from CHANGES.md). If this is a beta or release candidate, check
|
||||
"this is a pre-release" box at the bottom.
|
||||
|
||||
8. Announce the release on the [oiio-dev mail list](https://lists.aswf.io/g/oiio-dev)
|
||||
with the subject "Release: OpenImageIO v1.2.3.4" and using one of these
|
||||
templates for the body of the email.
|
||||
|
||||
For a monthly patch release:
|
||||
|
||||
> We have tagged v1.2.3.4 as the latest production release and moved the
|
||||
> "release" branch marker to that point. This is guaranteed to be API,
|
||||
> ABI, and link back-compatible with prior 1.2 releases. Release notes
|
||||
> are below.
|
||||
>
|
||||
> (Paste the full set of 1.2 changes here, just copy the appropriate
|
||||
> part of CHANGES.md)
|
||||
|
||||
For an annual major/minor release:
|
||||
|
||||
> OpenImageIO version 1.2 has been released! Officially tagged as
|
||||
> "v1.2.3.4", we have also moved the "release" branch tag to this
|
||||
> position. Henceforth, 1.2 is the supported production release family.
|
||||
> The API is now frozen -- we promise that subsequent 1.2.x releases
|
||||
> (which should happen monthly) will not break back-compatibility of API,
|
||||
> ABI, or linkage, compared to this release. Please note that this release
|
||||
> is *not* ABI or link compatible with 1.1 or older releases.
|
||||
>
|
||||
> Release notes for 1.2 outlining all the changes since last year's
|
||||
> release are below.
|
||||
>
|
||||
> Please note that a few of the build and runtime dependencies have
|
||||
> changed their minimum supported versions. (List here any important
|
||||
> changes to dependencies, compilers, or C++ standard that users should be
|
||||
> aware of.)
|
||||
>
|
||||
> (List here anything else that people should know about this release
|
||||
> family that may be surprising if they haven't followed the last year of
|
||||
> development closely, or that they must know even if they are too lazy to
|
||||
> read the release notes. If this is a major release that is not
|
||||
> backward-compatible with prior versions, warn about that here.)
|
||||
>
|
||||
> Enjoy, and please report any problems. We will continue to make patch
|
||||
> releases to the 1.2 family roughly monthly, which will contain bug fixes
|
||||
> and non-breaking enhancements.
|
||||
>
|
||||
> The older 1.1 series of releases is now considered obsolete. We will
|
||||
> continue for now to make 1.1 patch releases, but over time, these will
|
||||
> become less frequent and be reserved for only the most critical bug
|
||||
> fixes.
|
||||
>
|
||||
> The "master" branch is now progressing toward an eventual 1.3 release next
|
||||
> summer. As usual, you are welcome to use master for real work, but we do
|
||||
> not make any compatibility guarantees and don't guarantee continuing API
|
||||
> compatibility in master.
|
||||
>
|
||||
> (Paste the full set of 1.2 changes here, just copy the appropriate
|
||||
> part of CHANGES.md)
|
||||
|
||||
For a beta leading up to the annual major/minor release:
|
||||
|
||||
> OpenImageIO version 1.2 is now in beta, tagged as "v1.2.3.4-beta". We
|
||||
> will try very hard not to make any further API or ABI changes between
|
||||
> now and the final release (unless it is absolutely necessary to fix
|
||||
> an important problem identified during beta testing). The final 1.2
|
||||
> release is scheduled for [DATE GOES HERE], so please try building and
|
||||
> testing the beta so we are sure to find any problems.
|
||||
>
|
||||
> Release notes for 1.2 outlining all the changes since last year's
|
||||
> release are below.
|
||||
>
|
||||
> (Paste the full set of 1.2 changes here, just copy the appropriate
|
||||
> part of CHANGES.md)
|
||||
|
||||
|
||||
### After the release
|
||||
|
||||
Odds and ends to do after the tag is pushed and the announcements are sent:
|
||||
|
||||
- Re-read RELEASING.md and ensure that the instructions match what you
|
||||
have done. Update as necessary.
|
||||
|
||||
- Go to readthedocs.org, and ensure that the new release is built and visible
|
||||
and is the default release shown (specified in the Admin section). I tend to
|
||||
keep the latest patch of each minor release available for reference
|
||||
indefinitely, but hide the docs for earlier patch releases within that minor
|
||||
release series.
|
||||
|
||||
- Edit the top-level CMakeList.txt to update the version to the *next*
|
||||
anticipated release on the branch, in order to ensure that anybody building
|
||||
from subsequent patches won't get a release number that advertises itself
|
||||
incorrectly as a prior tagged release. Also edit CHANGES.md to add a new
|
||||
(blank) heading for the next patch or release.
|
||||
|
||||
|
||||
+151
@@ -0,0 +1,151 @@
|
||||
New code entering the OpenImageIO repository from July 1 2023 onward is
|
||||
subject to the [Apache 2.0 license](LICENSE.md).
|
||||
|
||||
Code dating from earlier than July 1 2023 was contributed under the [BSD
|
||||
3-clause license](LICENSE-BSD-3-Clause.md), unless relicensed below.
|
||||
|
||||
The following copyright holders agree that all of their contributions
|
||||
originally submitted to this project under the 3-Clause BSD License are hereby
|
||||
relicensed to the Apache License, Version 2.0, and are submitted pursuant to
|
||||
the Developer Certificate of Origin, version 1.1:
|
||||
|
||||
- Larry Gritz (@lgritz)
|
||||
- Chris Kulla (fpsunflower)
|
||||
- Brecht Van Lommel (brechtvl)
|
||||
- Daniel Flehner Heen (apetrynet)
|
||||
- Daniel Wyatt (dewyatt)
|
||||
- Aras Pranckevičius (aras-p)
|
||||
- Leszek Godlewski (inequation)
|
||||
- Dalai Felinto (dfelinto)
|
||||
- Jesse Yurkovich (jessey-git)
|
||||
- Sergey Sharybin (sergeyvfx)
|
||||
- Ray Molenkamp (LazyDodo)
|
||||
- Nathan Rusch (nrusch)
|
||||
- Ismael Cortes (leamsi)
|
||||
- AdamMainsTL
|
||||
- Sony Pictures Imageworks (cmstein, olegul, fpsunflower, brianhall77, jeremyselan, drg, richardssam, lecocqp)
|
||||
- Richard Shaw (hobbes1069)
|
||||
- Robert Matusewicz
|
||||
- Mariusz Szczepańczyk (mszczepanczyk)
|
||||
- Scott Wilson
|
||||
- Kevin Brightwell (Nava2)
|
||||
- Simon Boorer
|
||||
- Alex Hughes (Ahuge)
|
||||
- Alister Chowdhury
|
||||
- Manuel Leonhardt (skycaptain)
|
||||
- Alexandre Gauthier (MrKepzie)
|
||||
- Mark Boorer (shootfast)
|
||||
- Povilas Kanapickas (p12tic)
|
||||
- Mikael Sundell
|
||||
- Roman Zulak (marsupial)
|
||||
- Autodesk (includes Thiago Ize, Elvic Liang, Wayne Arnold, William Krick, Brecht Van Lommel, Marcos Fajardo)
|
||||
- Thiago Ize
|
||||
- Nick Black (dankamongmen)
|
||||
- Michel Lerenard (micler)
|
||||
- Stefan Bruens (StefanBruens)
|
||||
- David Gordon
|
||||
- Claire Foster (c42f)
|
||||
- Konrad Kleine (kwk)
|
||||
- Simone Gasparini (simogasp)
|
||||
- Radu Arjocu (ra-mt)
|
||||
- Dominik Bartkiewicz (fafik23)
|
||||
- 360highdynamicrangehdr (?)
|
||||
- Leonid Onokhov (sopvop)
|
||||
- Nuno Cardoso (npcardoso)
|
||||
- Todica Ionut (360highdynamicrangehdr)
|
||||
- Till Dechent (ttddee)
|
||||
- Tom Knowles (knowlsie)
|
||||
- SRHMorris
|
||||
- Biswapriyo Nath (Biswa96)
|
||||
- Edoardo Dominici (dedoardo)
|
||||
- Frédéric Devernay (devernay)
|
||||
- Simone Gasparini (simogasp)
|
||||
- roelandschoukens
|
||||
- Nayden Dochev (nayyden)
|
||||
- Yann Lanthony (yann-lty)
|
||||
- Benjamin Buch (bebuch)
|
||||
- Joris Nijs (joris-nijs)
|
||||
- Jan Honsbrok (Latios96)
|
||||
- Matteo F. Vescovi (mfvescovi)
|
||||
- Patrick Northon (patlefort)
|
||||
- Eric Mehl (ericmehl)
|
||||
- Xo Wang (GHF)
|
||||
- etiam
|
||||
- Fabien Servant (servantftechnicolor)
|
||||
- Loïc Vital (mugulmd)
|
||||
- Thomas Mansencal (Wētā FX)
|
||||
- Brent Davis (btdavis)
|
||||
- pwm1234-sri
|
||||
- toxieainc
|
||||
- demoulinv
|
||||
- Julien Enche (jenche)
|
||||
- Justin Israel
|
||||
- xiaoxiaoafeifei
|
||||
- Brad Smith (brad0)
|
||||
- lmarz
|
||||
- Seifeddine Dridi (seifeddinedridi)
|
||||
- Daniel Dresser (danieldresser)
|
||||
- Luc Bournaud (DevilishSpirits)
|
||||
- Dennis Schridde (devurandom)
|
||||
- Dieter De Baets (debaetsd)
|
||||
- Gonzalo Garramuño (ggarra13)
|
||||
- Alan Jones (@skyphyr)
|
||||
- pumkinpal
|
||||
- Christopher Crosetto (ccrosetto)
|
||||
- Russell Greene (russelltg)
|
||||
- Sam Richards (richardssam)
|
||||
- Guillaume Chatelet (gchatelet)
|
||||
- extrowerk
|
||||
- Heiko Becker (heirecka)
|
||||
- Mark Visser (mjmvisser)
|
||||
- Harry Mallon (hjmallon)
|
||||
- Henri Fousse (darkhorse64)
|
||||
- Krzysztof Blicharski (blicharski)
|
||||
- Hugh Macdonald (HughMacdonald)
|
||||
- Pascal Lecocq (lecocqp)
|
||||
- Ramon Montoya Vozmediano (rmv)
|
||||
- Dan Wexler (danwexler)
|
||||
- Jérôme Duval (korli)
|
||||
- Tim Grant (timgrant)
|
||||
- Shane Ambler (sambler)
|
||||
- Wētā
|
||||
- Kimball Thurston (kdt3rd)
|
||||
- Anders Langlands (anderslanglands)
|
||||
- Алексей (Alexpux)
|
||||
- Fabien Castan (fabiencastan)
|
||||
- Grégoire De Lillo (gregoire-dl)
|
||||
- Edgar Velázquez-Armendáriz (edgarv)
|
||||
- Malcolm Humphreys (malcolmhumphreys)
|
||||
- johnfea
|
||||
- Max Liani (maxliani)
|
||||
- Michael Görner (v4hn)
|
||||
|
||||
**Prior authors, please submit a PR against this file that adds your name
|
||||
above. If, at the time of your prior contributions, you were employed by a
|
||||
company who would have owned your IP output, then please have someone from
|
||||
that company who is authorized to do so submit a PR to add their company’s
|
||||
name to the list under the statement in this file.**
|
||||
|
||||
|
||||
---
|
||||
|
||||
Here are the instructions we have been given by the Linux Foundation for how
|
||||
to document the contents of each file:
|
||||
|
||||
a. Files that consist of only contributions made entirely by companies that
|
||||
have submitted PRs as described above can have, once those PRs are merged,
|
||||
the BSD-3-Clause license information replaced with Apache-2.0 license
|
||||
information.
|
||||
|
||||
b. Files that contain contributions made after the change to the Apache-2.0
|
||||
license as the license for the project should include only the Apache-2.0
|
||||
license information.
|
||||
|
||||
c. Files that contain contributions made both before the Apache-2.0 license
|
||||
change and after the Apache-2.0 license change should include both
|
||||
BSD-3-Clause and Apache-2.0 license information. The SPDX identifier for
|
||||
these files is “BSD-3-Clause and Apache-2.0”.
|
||||
|
||||
d. Files that contain only contributions made prior to the Apache-2.0 license
|
||||
change should continue to include BSD-3-Clause license information (e.g.,
|
||||
no changes to BSD-3-Clause information included in those files).
|
||||
+5
-5
@@ -8,16 +8,16 @@ security vulnerabilities.
|
||||
| Version / branch | Supported |
|
||||
| ----------------- | ---------------------------------------------------- |
|
||||
| master | :white_check_mark: :construction: ALL fixes immediately, but this is a branch under development with a frequently unstable ABI and occasionally unstable API. |
|
||||
| 2.3.x | :white_check_mark: All fixes that can be backported without breaking ABI compatibility. New tagged releases monthly. |
|
||||
| 2.2.x | :x: Only receives occasional critical fixes, upon request. |
|
||||
| <= 2.1.x | :x: No longer receiving patches of any kind. |
|
||||
| 2.4.x | :white_check_mark: All fixes that can be backported without breaking ABI compatibility. New tagged releases monthly. |
|
||||
| 2.3.x | :x: Only receives occasional critical fixes, upon request. |
|
||||
| <= 2.2.x | :x: No longer receiving patches of any kind. |
|
||||
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
If you think you've found a potential vulnerability in OpenImageIO, please
|
||||
report it by emailing security@openimageio.org. Only the project administrator
|
||||
has access to these messages. Include detailed steps to reproduce the issue,
|
||||
report it by emailing security@openimageio.org. Only the project administrators
|
||||
have access to these messages. Include detailed steps to reproduce the issue,
|
||||
and any other information that could aid an investigation. Our policy is to
|
||||
respond to vulnerability reports within 14 days.
|
||||
|
||||
|
||||
+8
-1
@@ -1,5 +1,5 @@
|
||||
See [LICENSE.md](LICENSE.md) for the main open source license of original
|
||||
code written for the OpenImageIO project.
|
||||
code written for the OpenImageIO project, which is the Apache-2.0 license.
|
||||
|
||||
The remainder of this file reproduces the open source licensing details
|
||||
of other projects that have been imported, incorporated into, or derived
|
||||
@@ -12,6 +12,13 @@ In no particular order:
|
||||
BSD 3-Clause License
|
||||
SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
* OpenImageIO prior to July 1, 2023
|
||||
|
||||
Code that was contributed to OpenImageIO prior to July 1 2023, and has not
|
||||
yet been [relicensed](RELICENSING.md), was contributed under the [BSD
|
||||
3-clause license](LICENSE-BSD.md). Currently, this is less than 2% of the
|
||||
codebase (by lines of code).
|
||||
|
||||
* Gelato, Copyright (c) 2004 by NVIDIA Corp.
|
||||
|
||||
The initial (version 0.1) code found in imageio.h, fmath.h, filter.h,
|
||||
|
||||
+12
-6
@@ -222,12 +222,18 @@ else ifeq (${platform}, macosx)
|
||||
MY_CMAKE_FLAGS += \
|
||||
-DCMAKE_C_COMPILER=gcc-11 -DCMAKE_CXX_COMPILER=g++-11
|
||||
USE_LIBCPLUSPLUS := 0
|
||||
else ifeq (${COMPILER},clang9)
|
||||
MY_CMAKE_FLAGS += -DCMAKE_C_COMPILER=/usr/local/opt/llvm@9/bin/clang \
|
||||
-DCMAKE_CXX_COMPILER=/usr/local/opt/llvm@9/bin/clang++
|
||||
else ifeq (${COMPILER},clang11)
|
||||
MY_CMAKE_FLAGS += -DCMAKE_C_COMPILER=/usr/local/opt/llvm@11/bin/clang \
|
||||
-DCMAKE_CXX_COMPILER=/usr/local/opt/llvm@11/bin/clang++
|
||||
else ifeq (${COMPILER},clang13)
|
||||
MY_CMAKE_FLAGS += -DCMAKE_C_COMPILER=/usr/local/opt/llvm@13/bin/clang \
|
||||
-DCMAKE_CXX_COMPILER=/usr/local/opt/llvm@13/bin/clang++
|
||||
else ifeq (${COMPILER},clang14)
|
||||
MY_CMAKE_FLAGS += -DCMAKE_C_COMPILER=/usr/local/opt/llvm@14/bin/clang \
|
||||
-DCMAKE_CXX_COMPILER=/usr/local/opt/llvm@14/bin/clang++
|
||||
else ifeq (${COMPILER},clang15)
|
||||
MY_CMAKE_FLAGS += -DCMAKE_C_COMPILER=/usr/local/opt/llvm@15/bin/clang \
|
||||
-DCMAKE_CXX_COMPILER=/usr/local/opt/llvm@15/bin/clang++
|
||||
else ifeq (${COMPILER},clang16)
|
||||
MY_CMAKE_FLAGS += -DCMAKE_C_COMPILER=/usr/local/opt/llvm@16/bin/clang \
|
||||
-DCMAKE_CXX_COMPILER=/usr/local/opt/llvm@16/bin/clang++
|
||||
else ifeq (${COMPILER},clang)
|
||||
MY_CMAKE_FLAGS += -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
|
||||
else ifeq (${COMPILER},gcc)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# SPDX-License-Identifier: BSD-3-Clause and Apache-2.0
|
||||
# Copyright Contributors to the OpenImageIO Project.
|
||||
|
||||
sonar.host.url=https://sonarcloud.io
|
||||
@@ -11,12 +11,15 @@ sonar.projectKey=OpenImageIO_oiio
|
||||
|
||||
# Source properties
|
||||
sonar.sources=src
|
||||
sonar.exclusions=src/include/OpenImageIO/detail/pugixml/**
|
||||
sonar.exclusions=src/doc/**,src/include/OpenImageIO/detail/pugixml/**,src/libutil/stb_sprintf.h,src/libutil/xxhash.cpp,src/include/OpenImageIO/detail/farmhash.h,src/libutil/farmhash.cpp
|
||||
sonar.sourceEncoding=UTF-8
|
||||
|
||||
# C/C++ analyzer properties
|
||||
sonar.cfamily.build-wrapper-output=build/bw_output
|
||||
sonar.cfamily.gcov.reportsPath=_coverage
|
||||
sonar.coverage.exclusions=src/iv/**,src/include/OpenImageIO/detail/pugixml/**,src/include/OpenImageIO/detail/fmt/**,src/libOpenImageIO/kissfft.hh
|
||||
|
||||
sonar.cfamily.cache.enabled=true
|
||||
sonar.cfamily.cache.path=/tmp/sonarcache
|
||||
|
||||
sonar.verbose=false
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# Copyright 2008-present Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
add_oiio_plugin (bmpinput.cpp bmpoutput.cpp bmp_pvt.cpp)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// Copyright 2008-present Contributors to the OpenImageIO project.
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
// Copyright Contributors to the OpenImageIO project.
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
// https://github.com/OpenImageIO/oiio
|
||||
|
||||
|
||||
@@ -101,7 +101,8 @@ DibInformationHeader::read_header(Filesystem::IOProxy* fd)
|
||||
return false;
|
||||
}
|
||||
|
||||
if (size == WINDOWS_V4 || size == WINDOWS_V5 || size == UNDOCHEADER52
|
||||
if ((size == WINDOWS_V3 && bpp == 16 && compression == 3)
|
||||
|| size == WINDOWS_V4 || size == WINDOWS_V5 || size == UNDOCHEADER52
|
||||
|| size == UNDOCHEADER56) {
|
||||
if (!fread(fd, &red_mask) || !fread(fd, &green_mask)
|
||||
|| !fread(fd, &blue_mask)) {
|
||||
|
||||
+25
-19
@@ -1,5 +1,5 @@
|
||||
// Copyright 2008-present Contributors to the OpenImageIO project.
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
// Copyright Contributors to the OpenImageIO project.
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
// https://github.com/OpenImageIO/oiio
|
||||
|
||||
#pragma once
|
||||
@@ -36,6 +36,12 @@ const int32_t NO_COMPRESSION = 0; // BI_RGB
|
||||
const int32_t RLE8_COMPRESSION = 1; // BI_RLE8
|
||||
const int32_t RLE4_COMPRESSION = 2; // BI_RLE4
|
||||
|
||||
enum class CSType {
|
||||
CalibratedRGB = 0,
|
||||
DeviceDependentRGB = 1,
|
||||
DeviceDependentCMYK = 2
|
||||
};
|
||||
|
||||
|
||||
|
||||
// store information about BMP file
|
||||
@@ -85,23 +91,23 @@ public:
|
||||
// in most cases ignored
|
||||
|
||||
// added in Version 4 of the format
|
||||
int32_t red_mask;
|
||||
int32_t blue_mask;
|
||||
int32_t green_mask;
|
||||
int32_t alpha_mask;
|
||||
int32_t cs_type; //color space type
|
||||
int32_t red_x;
|
||||
int32_t red_y;
|
||||
int32_t red_z;
|
||||
int32_t green_x;
|
||||
int32_t green_y;
|
||||
int32_t green_z;
|
||||
int32_t blue_x;
|
||||
int32_t blue_y;
|
||||
int32_t blue_z;
|
||||
int32_t gamma_x;
|
||||
int32_t gamma_y;
|
||||
int32_t gamma_z;
|
||||
int32_t red_mask = 0;
|
||||
int32_t blue_mask = 0;
|
||||
int32_t green_mask = 0;
|
||||
int32_t alpha_mask = 0;
|
||||
int32_t cs_type = 0; // color space type
|
||||
int32_t red_x = 0;
|
||||
int32_t red_y = 0;
|
||||
int32_t red_z = 0;
|
||||
int32_t green_x = 0;
|
||||
int32_t green_y = 0;
|
||||
int32_t green_z = 0;
|
||||
int32_t blue_x = 0;
|
||||
int32_t blue_y = 0;
|
||||
int32_t blue_z = 0;
|
||||
int32_t gamma_x = 0;
|
||||
int32_t gamma_y = 0;
|
||||
int32_t gamma_z = 0;
|
||||
|
||||
// added in Version 5 of the format
|
||||
int32_t intent;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// Copyright 2008-present Contributors to the OpenImageIO project.
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
// Copyright Contributors to the OpenImageIO project.
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
// https://github.com/OpenImageIO/oiio
|
||||
|
||||
#include <cstdio>
|
||||
@@ -40,6 +40,8 @@ private:
|
||||
std::vector<bmp_pvt::color_table> m_colortable;
|
||||
std::vector<unsigned char> fscanline; // temp space: read from file
|
||||
std::vector<unsigned char> m_uncompressed; // uncompressed palette image
|
||||
uint32_t m_right_shifts[3];
|
||||
uint32_t m_bit_counts[3];
|
||||
bool m_allgray;
|
||||
|
||||
void init(void)
|
||||
@@ -108,6 +110,28 @@ BmpInput::open(const std::string& name, ImageSpec& newspec)
|
||||
return open(name, newspec, emptyconfig);
|
||||
}
|
||||
|
||||
inline void
|
||||
calc_shifts(uint32_t mask, uint32_t& count, uint32_t& right)
|
||||
{
|
||||
if (mask == 0) {
|
||||
count = right = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
uint32_t i;
|
||||
for (i = 0; i < 32; i++, mask >>= 1) {
|
||||
if (mask & 1)
|
||||
break;
|
||||
}
|
||||
right = i;
|
||||
|
||||
for (i = 0; i < 32; i++, mask >>= 1) {
|
||||
if (!(mask & 1))
|
||||
break;
|
||||
}
|
||||
count = i;
|
||||
}
|
||||
|
||||
|
||||
|
||||
bool
|
||||
@@ -174,6 +198,17 @@ BmpInput::open(const std::string& name, ImageSpec& newspec,
|
||||
return false;
|
||||
}
|
||||
|
||||
// Compute channel shifts & masks (only relevant for 16bpp case)
|
||||
if (m_dib_header.red_mask == 0 || m_dib_header.green_mask == 0
|
||||
|| m_dib_header.blue_mask == 0) {
|
||||
m_dib_header.red_mask = 0b111110000000000;
|
||||
m_dib_header.green_mask = 0b000001111100000;
|
||||
m_dib_header.blue_mask = 0b000000000011111;
|
||||
}
|
||||
calc_shifts(m_dib_header.red_mask, m_bit_counts[0], m_right_shifts[0]);
|
||||
calc_shifts(m_dib_header.green_mask, m_bit_counts[1], m_right_shifts[1]);
|
||||
calc_shifts(m_dib_header.blue_mask, m_bit_counts[2], m_right_shifts[2]);
|
||||
|
||||
// computing size of one scanline - this is the size of one scanline that
|
||||
// is stored in the file, not in the memory
|
||||
int swidth = 0;
|
||||
@@ -184,7 +219,7 @@ BmpInput::open(const std::string& name, ImageSpec& newspec,
|
||||
break;
|
||||
case 16:
|
||||
m_padded_scanline_size = ((m_spec.width << 1) + 3) & ~3;
|
||||
m_spec.attribute("oiio:BitsPerSample", 4);
|
||||
m_spec.attribute("oiio:BitsPerSample", m_bit_counts[0]);
|
||||
break;
|
||||
case 8:
|
||||
m_padded_scanline_size = (m_spec.width + 3) & ~3;
|
||||
@@ -221,6 +256,25 @@ BmpInput::open(const std::string& name, ImageSpec& newspec,
|
||||
case WINDOWS_V5: m_spec.attribute("bmp:version", 5); break;
|
||||
}
|
||||
|
||||
// Default presumption is that a BMP file is meant to look reasonable on a
|
||||
// display, so assume it's sRGB. This is not really correct -- see the
|
||||
// comments below.
|
||||
m_spec.attribute("oiio:ColorSpace", "sRGB");
|
||||
#if 0
|
||||
if (m_dib_header.size >= WINDOWS_V4
|
||||
&& m_dib_header.cs_type == CSType::CalibratedRGB) {
|
||||
// FIXME: V4 and newer BMP files have color primary information, but
|
||||
// we currently ignore it and presume sRGB. I don't know how
|
||||
// frequently the color primaries are reliable or if anybody cares for
|
||||
// this ancient format. We may come back to this later.
|
||||
}
|
||||
if (m_dib_header.size >= WINDOWS_V4
|
||||
&& m_dib_header.cs_type == CSType::DeviceDependentCMYK) {
|
||||
// FIXME: I've never encountered a BMP file that holds CMYK data. If
|
||||
// this is a problem for people, we can return to fix this later.
|
||||
}
|
||||
#endif
|
||||
|
||||
// Bite the bullet and uncompress now, for simplicity
|
||||
if (m_dib_header.compression == RLE4_COMPRESSION
|
||||
|| m_dib_header.compression == RLE8_COMPRESSION) {
|
||||
@@ -243,14 +297,23 @@ BmpInput::read_rle_image()
|
||||
int rletype = m_dib_header.compression == RLE4_COMPRESSION ? 4 : 8;
|
||||
m_spec.attribute("compression", rletype == 4 ? "rle4" : "rle8");
|
||||
m_uncompressed.clear();
|
||||
m_uncompressed.resize(m_spec.height * m_spec.width);
|
||||
m_uncompressed.resize(m_spec.image_pixels());
|
||||
// Note: the clear+resize zeroes out the buffer
|
||||
bool ok = true;
|
||||
int y = 0, x = 0;
|
||||
while (ok) {
|
||||
// Strutil::print("currently at {},{}\n", x, y);
|
||||
unsigned char rle_pair[2];
|
||||
if (!ioread(rle_pair, 2)) {
|
||||
ok = false;
|
||||
// Strutil::print("hit end of file at {},{}\n", x, y);
|
||||
break;
|
||||
}
|
||||
if (y >= m_spec.height) { // out of y bounds
|
||||
errorfmt(
|
||||
"BMP might be corrupted, it is referencing an out-of-bounds pixel coordinte ({},{})",
|
||||
x, y);
|
||||
ok = false;
|
||||
break;
|
||||
}
|
||||
int npixels = rle_pair[0];
|
||||
@@ -259,8 +322,10 @@ BmpInput::read_rle_image()
|
||||
// [0,0] is end of line marker
|
||||
x = 0;
|
||||
++y;
|
||||
// Strutil::print("end of line, moving to {},{}\n", x, y);
|
||||
} else if (npixels == 0 && value == 1) {
|
||||
// [0,1] is end of bitmap marker
|
||||
// Strutil::print("end of bitmap\n");
|
||||
break;
|
||||
} else if (npixels == 0 && value == 2) {
|
||||
// [0,2] is a "delta" -- two more bytes reposition the
|
||||
@@ -269,14 +334,17 @@ BmpInput::read_rle_image()
|
||||
ok &= ioread(offset, 2);
|
||||
x += offset[0];
|
||||
y += offset[1];
|
||||
// Strutil::print("offset by {:d},{:d} to {},{}\n", offset[0],
|
||||
// offset[1], x, y);
|
||||
} else if (npixels == 0) {
|
||||
// [0,n>2] is an "absolute" run of pixel data.
|
||||
// n is the number of pixel indices that follow, but note
|
||||
// that it pads to word size.
|
||||
int npixels = value;
|
||||
int nbytes = (rletype == 4)
|
||||
? round_to_multiple((npixels + 1) / 2, 2)
|
||||
: round_to_multiple(npixels, 2);
|
||||
npixels = value;
|
||||
int nbytes = (rletype == 4)
|
||||
? round_to_multiple((npixels + 1) / 2, 2)
|
||||
: round_to_multiple(npixels, 2);
|
||||
// Strutil::print("rle of {} pixels at {},{}\n", npixels, x, y);
|
||||
unsigned char absolute[256];
|
||||
ok &= ioread(absolute, nbytes);
|
||||
for (int i = 0; i < npixels; ++i, ++x) {
|
||||
@@ -290,6 +358,7 @@ BmpInput::read_rle_image()
|
||||
}
|
||||
} else {
|
||||
// [n>0,p] is a run of n pixels.
|
||||
// Strutil::print("direct read {} pixels at {},{}\n", npixels, x, y);
|
||||
for (int i = 0; i < npixels; ++i, ++x) {
|
||||
int v;
|
||||
if (rletype == 4)
|
||||
@@ -354,14 +423,20 @@ BmpInput::read_native_scanline(int subimage, int miplevel, int y, int /*z*/,
|
||||
}
|
||||
|
||||
if (m_dib_header.bpp == 16) {
|
||||
const uint16_t RED = 0x7C00;
|
||||
const uint16_t GREEN = 0x03E0;
|
||||
const uint16_t BLUE = 0x001F;
|
||||
for (unsigned int i = 0, j = 0; j < scanline_bytes; i += 2, j += 3) {
|
||||
uint16_t pixel = (uint16_t) * (&fscanline[i]);
|
||||
mscanline[j] = (uint8_t)((pixel & RED) >> 8);
|
||||
mscanline[j + 1] = (uint8_t)((pixel & GREEN) >> 4);
|
||||
mscanline[j + 2] = (uint8_t)(pixel & BLUE);
|
||||
uint16_t pixel = *(uint16_t*)&fscanline[i];
|
||||
mscanline[j + 0]
|
||||
= (uint8_t)bit_range_convert((pixel & m_dib_header.red_mask)
|
||||
>> m_right_shifts[0],
|
||||
m_bit_counts[0], 8);
|
||||
mscanline[j + 1]
|
||||
= (uint8_t)bit_range_convert((pixel & m_dib_header.green_mask)
|
||||
>> m_right_shifts[1],
|
||||
m_bit_counts[1], 8);
|
||||
mscanline[j + 2]
|
||||
= (uint8_t)bit_range_convert((pixel & m_dib_header.blue_mask)
|
||||
>> m_right_shifts[2],
|
||||
m_bit_counts[2], 8);
|
||||
}
|
||||
}
|
||||
if (m_dib_header.bpp == 8) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// Copyright 2008-present Contributors to the OpenImageIO project.
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
// Copyright Contributors to the OpenImageIO project.
|
||||
// SPDX-License-Identifier: BSD-3-Clause and Apache-2.0
|
||||
// https://github.com/OpenImageIO/oiio
|
||||
|
||||
#include <cstdio>
|
||||
@@ -97,6 +97,12 @@ BmpOutput::open(const std::string& name, const ImageSpec& spec, OpenMode mode)
|
||||
return false;
|
||||
}
|
||||
|
||||
if (m_spec.x || m_spec.y || m_spec.z) {
|
||||
errorfmt("{} does not support images with non-zero image origin offset",
|
||||
format_name());
|
||||
return false;
|
||||
}
|
||||
|
||||
// Only support 8 bit channels for now.
|
||||
m_spec.set_format(TypeDesc::UINT8);
|
||||
m_dither = m_spec.get_int_attribute("oiio:dither", 0);
|
||||
@@ -133,12 +139,18 @@ bool
|
||||
BmpOutput::write_scanline(int y, int z, TypeDesc format, const void* data,
|
||||
stride_t xstride)
|
||||
{
|
||||
if (y > m_spec.height) {
|
||||
if (!ioproxy_opened()) {
|
||||
errorfmt("write_scanline called but file is not open.");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (y > m_spec.y + m_spec.height) {
|
||||
errorfmt("Attempt to write too many scanlines to {}", m_filename);
|
||||
close();
|
||||
return false;
|
||||
}
|
||||
|
||||
y -= m_spec.y;
|
||||
if (m_spec.width >= 0)
|
||||
y = (m_spec.height - y - 1);
|
||||
int64_t scanline_off = y * m_padded_scanline_size;
|
||||
@@ -165,9 +177,14 @@ bool
|
||||
BmpOutput::write_tile(int x, int y, int z, TypeDesc format, const void* data,
|
||||
stride_t xstride, stride_t ystride, stride_t zstride)
|
||||
{
|
||||
if (!ioproxy_opened()) {
|
||||
errorfmt("write_tile called but file is not open.");
|
||||
return false;
|
||||
}
|
||||
|
||||
// Emulate tiles by buffering the whole image
|
||||
return copy_tile_to_image_buffer(x, y, z, format, data, xstride, ystride,
|
||||
zstride, &m_tilebuffer[0]);
|
||||
zstride, m_tilebuffer.data());
|
||||
}
|
||||
|
||||
|
||||
@@ -181,11 +198,11 @@ BmpOutput::close(void)
|
||||
}
|
||||
|
||||
bool ok = true;
|
||||
if (m_spec.tile_width) {
|
||||
if (m_spec.tile_width && m_tilebuffer.size()) {
|
||||
// Handle tile emulation -- output the buffered pixels
|
||||
OIIO_DASSERT(m_tilebuffer.size());
|
||||
ok &= write_scanlines(m_spec.y, m_spec.y + m_spec.height, 0,
|
||||
m_spec.format, &m_tilebuffer[0]);
|
||||
m_spec.format, m_tilebuffer.data());
|
||||
std::vector<unsigned char>().swap(m_tilebuffer);
|
||||
}
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# Utility script to download and build OpenJPEG
|
||||
#
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
# Exit the whole script if any command fails.
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# Utility script to download and build Ptex
|
||||
#
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
# Exit the whole script if any command fails.
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Utility script to download and build cmake
|
||||
#
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
# Exit the whole script if any command fails.
|
||||
set -ex
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
# Utility script to download and build giflib
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# Utility script to download and build libjpeg-turbo
|
||||
#
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
# Exit the whole script if any command fails.
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# Utility script to download and build libpng
|
||||
#
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
# Exit the whole script if any command fails.
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
# Utility script to download and build LibRaw
|
||||
|
||||
# Exit the whole script if any command fails.
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
# Utility script to download and build libtiff
|
||||
|
||||
# Exit the whole script if any command fails.
|
||||
@@ -39,6 +43,7 @@ if [[ -z $DEP_DOWNLOAD_ONLY ]]; then
|
||||
time cmake -DCMAKE_BUILD_TYPE=${LIBTIFF_BUILD_TYPE} \
|
||||
-DCMAKE_INSTALL_PREFIX=${LIBTIFF_INSTALL_DIR} \
|
||||
-DCMAKE_CXX_FLAGS="${LIBTIFF_CXX_FLAGS}" \
|
||||
-DBUILD_SHARED_LIBS=${LIBTIFF_BUILD_SHARED_LIBS:-ON} \
|
||||
${LIBTIFF_BUILDOPTS} ..
|
||||
time cmake --build . --target install
|
||||
fi
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Utility script to download and build LLVM & clang
|
||||
#
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
# Exit the whole script if any command fails.
|
||||
set -ex
|
||||
@@ -10,30 +14,12 @@ uname
|
||||
|
||||
|
||||
if [[ `uname` == "Linux" ]] ; then
|
||||
LLVM_VERSION=${LLVM_VERSION:=13.0.0}
|
||||
LLVM_INSTALL_DIR=${LLVM_INSTALL_DIR:=${PWD}/llvm-install}
|
||||
if [[ "$GITHUB_WORKFLOW" != "" ]] ; then
|
||||
LLVM_DISTRO_NAME=${LLVM_DISTRO_NAME:=ubuntu-18.04}
|
||||
elif [[ "$TRAVIS_DIST" == "trusty" ]] ; then
|
||||
LLVM_DISTRO_NAME=${LLVM_DISTRO_NAME:=ubuntu-14.04}
|
||||
elif [[ "$TRAVIS_DIST" == "xenial" ]] ; then
|
||||
LLVM_DISTRO_NAME=${LLVM_DISTRO_NAME:=ubuntu-16.04}
|
||||
elif [[ "$TRAVIS_DIST" == "bionic" ]] ; then
|
||||
LLVM_DISTRO_NAME=${LLVM_DISTRO_NAME:=ubuntu-18.04}
|
||||
else
|
||||
LLVM_DISTRO_NAME=${LLVM_DISTRO_NAME:=error}
|
||||
fi
|
||||
: ${LLVM_VERSION:=13.0.0}
|
||||
: ${LLVM_INSTALL_DIR:=${PWD}/llvm-install}
|
||||
: ${LLVM_DISTRO_NAME:=ubuntu-18.04}
|
||||
LLVMTAR=clang+llvm-${LLVM_VERSION}-x86_64-linux-gnu-${LLVM_DISTRO_NAME}.tar.xz
|
||||
echo LLVMTAR = $LLVMTAR
|
||||
if [[ "$LLVM_VERSION" == "10.0.0" ]] || [[ "$LLVM_VERSION" == "11.0.0" ]] \
|
||||
|| [[ "$LLVM_VERSION" == "11.1.0" ]] || [[ "$LLVM_VERSION" == "12.0.0" ]] \
|
||||
|| [[ "$LLVM_VERSION" == "13.0.0" ]] || [[ "$LLVM_VERSION" == "14.0.0" ]] ;
|
||||
then
|
||||
# new
|
||||
curl --location https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/${LLVMTAR} -o $LLVMTAR
|
||||
else
|
||||
curl --location http://releases.llvm.org/${LLVM_VERSION}/${LLVMTAR} -o $LLVMTAR
|
||||
fi
|
||||
curl --location https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/${LLVMTAR} -o $LLVMTAR
|
||||
ls -l $LLVMTAR
|
||||
tar xf $LLVMTAR
|
||||
rm -f $LLVMTAR
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
# Exit the whole script if any command fails.
|
||||
set -ex
|
||||
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
# Utility script to download and build OpenColorIO
|
||||
|
||||
# Exit the whole script if any command fails.
|
||||
@@ -7,7 +11,7 @@ set -ex
|
||||
|
||||
# Which OCIO to retrieve, how to build it
|
||||
OPENCOLORIO_REPO=${OPENCOLORIO_REPO:=https://github.com/AcademySoftwareFoundation/OpenColorIO.git}
|
||||
OPENCOLORIO_VERSION=${OPENCOLORIO_VERSION:=v2.1.2}
|
||||
OPENCOLORIO_VERSION=${OPENCOLORIO_VERSION:=v2.2.1}
|
||||
|
||||
# Where to install the final results
|
||||
LOCAL_DEPS_DIR=${LOCAL_DEPS_DIR:=${PWD}/ext}
|
||||
|
||||
@@ -2,12 +2,16 @@
|
||||
|
||||
# Utility script to download and build OpenEXR & IlmBase
|
||||
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: BSD-3-Clause and Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
# Exit the whole script if any command fails.
|
||||
set -ex
|
||||
|
||||
# Which OpenEXR to retrieve, how to build it
|
||||
OPENEXR_REPO=${OPENEXR_REPO:=https://github.com/AcademySoftwareFoundation/openexr.git}
|
||||
OPENEXR_VERSION=${OPENEXR_VERSION:=v2.4.1}
|
||||
OPENEXR_VERSION=${OPENEXR_VERSION:=v3.1.9}
|
||||
|
||||
# Where to install the final results
|
||||
LOCAL_DEPS_DIR=${LOCAL_DEPS_DIR:=${PWD}/ext}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# Utility script to download and build pugixml
|
||||
#
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
# Exit the whole script if any command fails.
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
# Utility script to download and build pybind11
|
||||
|
||||
# Exit the whole script if any command fails.
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# Utility script to download and build webp
|
||||
#
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
# Exit the whole script if any command fails.
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# Utility script to download and build zlib
|
||||
#
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
# Exit the whole script if any command fails.
|
||||
|
||||
@@ -1,24 +1,30 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
# Important: set -ex causes this whole script to terminate with error if
|
||||
# any command in it fails. This is crucial for CI tests.
|
||||
set -ex
|
||||
|
||||
OIIO_CMAKE_FLAGS="$MY_CMAKE_FLAGS $OIIO_CMAKE_FLAGS"
|
||||
|
||||
if [[ "$USE_SIMD" != "" ]] ; then
|
||||
MY_CMAKE_FLAGS="$MY_CMAKE_FLAGS -DUSE_SIMD=$USE_SIMD"
|
||||
OIIO_CMAKE_FLAGS="$OIIO_CMAKE_FLAGS -DUSE_SIMD=$USE_SIMD"
|
||||
fi
|
||||
|
||||
if [[ -n "$FMT_VERSION" ]] ; then
|
||||
MY_CMAKE_FLAGS="$MY_CMAKE_FLAGS -DBUILD_FMT_VERSION=$FMT_VERSION"
|
||||
OIIO_CMAKE_FLAGS="$OIIO_CMAKE_FLAGS -DBUILD_FMT_VERSION=$FMT_VERSION"
|
||||
fi
|
||||
|
||||
if [[ -n "$CODECOV" ]] ; then
|
||||
MY_CMAKE_FLAGS="$MY_CMAKE_FLAGS -DCODECOV=${CODECOV}"
|
||||
OIIO_CMAKE_FLAGS="$OIIO_CMAKE_FLAGS -DCODECOV=${CODECOV}"
|
||||
fi
|
||||
|
||||
# On GHA, we can reduce build time with "unity" builds.
|
||||
if [[ ${GITHUB_ACTIONS} == true ]] ; then
|
||||
MY_CMAKE_FLAGS+=" -DCMAKE_UNITY_BUILD=${CMAKE_UNITY_BUILD:=ON} -DCMAKE_UNITY_BUILD_MODE=${CMAKE_UNITY_BUILD_MODE:=BATCH}"
|
||||
OIIO_CMAKE_FLAGS+=" -DCMAKE_UNITY_BUILD=${CMAKE_UNITY_BUILD:=ON} -DCMAKE_UNITY_BUILD_MODE=${CMAKE_UNITY_BUILD_MODE:=BATCH}"
|
||||
fi
|
||||
|
||||
pushd build
|
||||
@@ -31,15 +37,16 @@ cmake .. -G "$CMAKE_GENERATOR" \
|
||||
-DCMAKE_CXX_STANDARD="$CMAKE_CXX_STANDARD" \
|
||||
-DOIIO_DOWNLOAD_MISSING_TESTDATA=ON \
|
||||
-DEXTRA_CPP_ARGS="${OIIO_EXTRA_CPP_ARGS}" \
|
||||
$MY_CMAKE_FLAGS -DVERBOSE=1
|
||||
$OIIO_CMAKE_FLAGS -DVERBOSE=1
|
||||
|
||||
# Save a copy of the generated files for debugging broken CI builds.
|
||||
mkdir cmake-save || /bin/true
|
||||
cp -r CMake* *.cmake cmake-save
|
||||
|
||||
: ${BUILDTARGET:=install}
|
||||
if [[ "$BUILDTARGET" != "none" ]] ; then
|
||||
echo "Parallel build " ${CMAKE_BUILD_PARALLEL_LEVEL}
|
||||
time ${OIIO_CMAKE_BUILD_WRAPPER} cmake --build . --target ${BUILDTARGET:=install} --config ${CMAKE_BUILD_TYPE}
|
||||
echo "Parallel build ${CMAKE_BUILD_PARALLEL_LEVEL} of target ${BUILDTARGET}"
|
||||
time ${OIIO_CMAKE_BUILD_WRAPPER} cmake --build . --target ${BUILDTARGET} --config ${CMAKE_BUILD_TYPE}
|
||||
fi
|
||||
popd
|
||||
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
# Run code coverage analysis
|
||||
# This assumes that the build occurred with CODECOV=1 andtests have already
|
||||
# This assumes that the build occurred with CODECOV=1 and tests have already
|
||||
# fully run.
|
||||
|
||||
set -ex
|
||||
@@ -10,18 +14,6 @@ echo "Performing code coverage analysis"
|
||||
mkdir _coverage
|
||||
pushd _coverage
|
||||
|
||||
ls -R ../build/src/
|
||||
|
||||
# Remove files or directories we want to exclude from code coverage analysis,
|
||||
# generally because we don't expect to execute any of their code during our
|
||||
# CI. (Because it's only used interactively, or is fallback code only used
|
||||
# when certain dependencies are not found.) Including these when we know we
|
||||
# won't be calling them during coverage gathering will just make our coverage
|
||||
# percentage look artifically low.
|
||||
rm -f ../build/src/iv/CMakeFiles/iv.dir/*.cpp.{gcno,gcda}
|
||||
rm -f ../build/src/iv/CMakeFiles/iv.dir/iv_autogen/*.cpp.{gcno,gcda}
|
||||
rm -f ../build/src/libOpenImageIO/CMakeFiles/OpenImageIO.dir/__/include/OpenImageIO/detail/pugixml/*.cpp.{gcno,gcda}
|
||||
|
||||
|
||||
# The sed command below converts from:
|
||||
# ../build/src/libOpenImageIO/CMakeFiles/OpenImageIO.dir/foo.gcno
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
# This script is run when CI system first starts up.
|
||||
# Since it sets many env variables needed by the caller, it should be run
|
||||
# with 'source', not in a separate shell.
|
||||
@@ -21,6 +25,7 @@ export LD_LIBRARY_PATH=$OpenImageIO_ROOT/lib64:$LD_LIBRARY_PATH
|
||||
export OIIO_LIBRARY_PATH=$OpenImageIO_ROOT/lib
|
||||
export LSAN_OPTIONS=suppressions=$PWD/src/build-scripts/nosanitize.txt
|
||||
export ASAN_OPTIONS=print_suppressions=0
|
||||
export UBSAN_OPTIONS=suppressions=$PWD/src/build-scripts/ubsan-suppressions.txt
|
||||
|
||||
export PYTHON_VERSION=${PYTHON_VERSION:="2.7"}
|
||||
export PYTHONPATH=$OpenImageIO_ROOT/lib/python${PYTHON_VERSION}/site-packages:$PYTHONPATH
|
||||
|
||||
@@ -1,13 +1,47 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
# Important: set -ex causes this whole script to terminate with error if
|
||||
# any command in it fails. This is crucial for CI tests.
|
||||
set -ex
|
||||
# (Though we let it run all the way through for code coverage workflows.)
|
||||
if [[ "${CODECOV}" == "" ]]; then
|
||||
set -ex
|
||||
fi
|
||||
|
||||
$OpenImageIO_ROOT/bin/oiiotool --help
|
||||
: ${CTEST_EXCLUSIONS:="broken"}
|
||||
: ${CTEST_TEST_TIMEOUT:=180}
|
||||
|
||||
#
|
||||
# Try a few command line options to test them and also get some important
|
||||
# debugging info in the CI logs.
|
||||
#
|
||||
echo ; echo "Results of oiiotool --version:"
|
||||
$OpenImageIO_ROOT/bin/oiiotool --version || true
|
||||
echo ; echo "Results of oiiotool brief help:"
|
||||
$OpenImageIO_ROOT/bin/oiiotool || true
|
||||
echo ; echo "Results of oiiotool full --help:"
|
||||
$OpenImageIO_ROOT/bin/oiiotool --help || true
|
||||
echo ; echo "Results of oiiotool with no args (should get short help message):"
|
||||
$OpenImageIO_ROOT/bin/oiiotool || true
|
||||
echo ; echo "Run unit tests and simple stats:"
|
||||
$OpenImageIO_ROOT/bin/oiiotool --unittest --list-formats --threads 0 \
|
||||
--cache 1000 --autotile --autopremult --runstats || true
|
||||
echo ; echo "Try unknown command:"
|
||||
$OpenImageIO_ROOT/bin/oiiotool -q --unknown || true
|
||||
|
||||
|
||||
#
|
||||
# Full test suite
|
||||
#
|
||||
echo "Parallel test ${CTEST_PARALLEL_LEVEL}"
|
||||
echo "Default timeout ${CTEST_TEST_TIMEOUT}"
|
||||
echo "Test exclusions '${CTEST_EXCLUSIONS}'"
|
||||
echo "CTEST_ARGS '${CTEST_ARGS}'"
|
||||
|
||||
echo "Parallel test " ${CTEST_PARALLEL_LEVEL}
|
||||
pushd build
|
||||
time ctest -C ${CMAKE_BUILD_TYPE} -E broken --force-new-ctest-process \
|
||||
--output-on-failure --timeout ${CTEST_TEST_TIMEOUT:=180} ${CTEST_ARGS}
|
||||
time ctest -C ${CMAKE_BUILD_TYPE} --force-new-ctest-process --output-on-failure \
|
||||
-E "${CTEST_EXCLUSIONS}" --timeout ${CTEST_TEST_TIMEOUT} ${CTEST_ARGS}
|
||||
popd
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
|
||||
set -ex
|
||||
|
||||
|
||||
@@ -38,16 +43,28 @@ if [[ "$ASWF_ORG" != "" ]] ; then
|
||||
popd
|
||||
fi
|
||||
|
||||
if [[ "$CXX" == "icpc" || "$CC" == "icc" || "$USE_ICC" != "" || "$CXX" == "icpx" || "$CC" == "icx" || "$USE_ICX" != "" ]] ; then
|
||||
if [[ "$CXX" == "icpc" || "$CC" == "icc" || "$USE_ICC" != "" ]] ; then
|
||||
# Lock down icc to 2022.1 because newer versions hosted on the Intel
|
||||
# repo require a glibc too new for the ASWF CentOS7-based containers
|
||||
# we run CI on.
|
||||
sudo cp src/build-scripts/oneAPI.repo /etc/yum.repos.d
|
||||
sudo yum install -y intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic
|
||||
sudo /usr/bin/yum install -y intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2022.1.0.x86_64
|
||||
set +e; source /opt/intel/oneapi/setvars.sh --config oneapi_2022.1.0.cfg; set -e
|
||||
elif [[ "$CXX" == "icpc" || "$CC" == "icc" || "$USE_ICC" != "" || "$CXX" == "icpx" || "$CC" == "icx" || "$USE_ICX" != "" ]] ; then
|
||||
# Lock down icx to 2023.1 because newer versions hosted on the Intel
|
||||
# repo require a libstd++ too new for the ASWF containers we run CI on
|
||||
# because their default install of gcc 9 based toolchain.
|
||||
sudo cp src/build-scripts/oneAPI.repo /etc/yum.repos.d
|
||||
sudo yum install -y intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2023.1.0.x86_64
|
||||
# sudo yum install -y intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic
|
||||
set +e; source /opt/intel/oneapi/setvars.sh; set -e
|
||||
echo "Verifying installation of Intel(r) oneAPI DPC++/C++ Compiler:"
|
||||
icpx --version
|
||||
fi
|
||||
|
||||
else
|
||||
# Using native Ubuntu runner
|
||||
|
||||
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
|
||||
time sudo apt-get update
|
||||
|
||||
time sudo apt-get -q install -y \
|
||||
@@ -63,8 +80,12 @@ else
|
||||
libopencolorio-dev \
|
||||
libopencv-dev \
|
||||
libhdf5-dev
|
||||
time sudo apt-get -q install -y \
|
||||
qt5-default || /bin/true
|
||||
if [[ "${QT_VERSION:-5}" == "5" ]] ; then
|
||||
time sudo apt-get -q install -y \
|
||||
qt5-default || /bin/true
|
||||
elif [[ "${QT_VERSION}" == "6" ]] ; then
|
||||
time sudo apt-get -q install -y qt6-base-dev || /bin/true
|
||||
fi
|
||||
if [[ "${EXTRA_DEP_PACKAGES}" != "" ]] ; then
|
||||
time sudo apt-get -q install -y ${EXTRA_DEP_PACKAGES}
|
||||
fi
|
||||
@@ -81,9 +102,11 @@ else
|
||||
fi
|
||||
|
||||
if [[ "$USE_LIBHEIF" != "0" ]] ; then
|
||||
sudo add-apt-repository ppa:strukturag/libde265
|
||||
sudo add-apt-repository ppa:strukturag/libheif
|
||||
time sudo apt-get -q install -y libheif-dev
|
||||
sudo add-apt-repository ppa:strukturag/libde265 || true
|
||||
sudo add-apt-repository ppa:strukturag/libheif || true
|
||||
time sudo apt-get -q install -y libheif-plugin-aomdec \
|
||||
libheif-plugin-aomenc libheif-plugin-libde265 \
|
||||
libheif-plugin-x265 libheif-dev || true
|
||||
fi
|
||||
|
||||
export CMAKE_PREFIX_PATH=/usr/lib/x86_64-linux-gnu:$CMAKE_PREFIX_PATH
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright 2008-present Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
# DEP_DIR="$PWD/ext/dist"
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
# This script, which assumes it is running on a Mac OSX with Homebrew
|
||||
# installed, does a "brew install" in all packages reasonably needed by
|
||||
# OIIO.
|
||||
@@ -25,7 +29,6 @@ brew list --versions
|
||||
brew install --display-times -q gcc ccache cmake ninja boost || true
|
||||
brew link --overwrite gcc
|
||||
brew install --display-times -q python@${PYTHON_VERSION} || true
|
||||
brew unlink python@2.7 || true
|
||||
brew unlink python@3.8 || true
|
||||
brew unlink python@3.9 || true
|
||||
brew unlink python@3.10 || true
|
||||
@@ -40,18 +43,14 @@ brew install --display-times -q ffmpeg libheif ptex || true
|
||||
brew install --display-times -q tbb || true
|
||||
brew install --display-times -q openvdb || true
|
||||
brew install --display-times -q opencv || true
|
||||
brew install --display-times -q qt@5
|
||||
brew install --display-times -q qt${QT_VERSION}
|
||||
|
||||
echo ""
|
||||
echo "After brew installs:"
|
||||
brew list --versions
|
||||
|
||||
# Needed on some systems
|
||||
if [[ $PYTHON_VERSION != "2.7" ]] ; then
|
||||
pip3 install numpy
|
||||
else
|
||||
pip install numpy
|
||||
fi
|
||||
pip${PYTHON_VERSION} install numpy
|
||||
|
||||
# Set up paths. These will only affect the caller if this script is
|
||||
# run with 'source' rather than in a separate shell.
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
if [[ ! -e ../oiio-images ]] ; then
|
||||
git clone https://github.com/OpenImageIO/oiio-images.git ../oiio-images
|
||||
git clone https://github.com/OpenImageIO/oiio-images.git -b RB-2.4 --depth 1 ../oiio-images
|
||||
# NOTE: on release branches, this should include `-b RB-x.y`` so that
|
||||
# updates to the master oiio-images don't break tests in release branches.
|
||||
fi
|
||||
|
||||
# if [[ ! -e ../libtiffpic ]] ; then
|
||||
@@ -10,7 +12,7 @@ fi
|
||||
# fi
|
||||
|
||||
if [[ ! -e ../openexr-images ]] ; then
|
||||
git clone https://github.com/openexr/openexr-images.git ../openexr-images
|
||||
git clone https://github.com/openexr/openexr-images.git --depth 1 ../openexr-images
|
||||
fi
|
||||
|
||||
# if [[ ! -e ../bmpsuite ]] ; then
|
||||
|
||||
@@ -1,10 +1,2 @@
|
||||
leak:Imf_2_2
|
||||
leak:Imf_2_3
|
||||
leak:libIlmImf
|
||||
leak:libgomp
|
||||
leak:boost::detail::make_external_thread_data
|
||||
leak:boost::detail::add_new_tss_node
|
||||
leak:g_malloc0
|
||||
leak:ArgParse::options
|
||||
leak:LibRaw::copy_fuji_uncropped
|
||||
leak:libtbb
|
||||
leak:libjpeg
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
# Save the env for use by other stages. Exclude things that we know aren't
|
||||
# needed.
|
||||
printenv \
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
# Copyright 2008-present Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
add_oiio_plugin (cineoninput.cpp
|
||||
libcineon/Cineon.cpp libcineon/OutStream.cpp libcineon/Codec.cpp
|
||||
libcineon/Reader.cpp libcineon/Writer.cpp libcineon/CineonHeader.cpp
|
||||
libcineon/Reader.cpp libcineon/CineonHeader.cpp
|
||||
libcineon/ElementReadStream.cpp libcineon/InStream.cpp)
|
||||
|
||||
# Note: OIIO doesn't support cineon output, so we don't compile
|
||||
# libcineon/Writer.cpp
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// Copyright 2008-present Contributors to the OpenImageIO project.
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
// Copyright Contributors to the OpenImageIO project.
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
// https://github.com/OpenImageIO/oiio
|
||||
|
||||
#include <cmath>
|
||||
@@ -108,7 +108,6 @@ CineonInput::open(const std::string& name, ImageSpec& newspec)
|
||||
// fill channel names
|
||||
m_spec.channelnames.clear();
|
||||
int gscount = 0, rcount = 0, gcount = 0, bcount = 0;
|
||||
char buf[3];
|
||||
for (int i = 0; i < m_cin.header.NumberOfElements(); i++) {
|
||||
switch (m_cin.header.ImageDescriptor(i)) {
|
||||
case cineon::kGrayscale:
|
||||
@@ -337,9 +336,12 @@ CineonInput::open(const std::string& name, ImageSpec& newspec)
|
||||
m_cin.header.sourceTime));
|
||||
// FIXME: do something about the time zone
|
||||
}
|
||||
m_cin.header.FilmEdgeCode(buf);
|
||||
if (buf[0])
|
||||
m_spec.attribute("cineon:FilmEdgeCode", buf);
|
||||
{
|
||||
char filmedge[17];
|
||||
m_cin.header.FilmEdgeCode(filmedge, sizeof(filmedge));
|
||||
if (filmedge[0])
|
||||
m_spec.attribute("cineon:FilmEdgeCode", filmedge);
|
||||
}
|
||||
|
||||
// read in user data
|
||||
if (m_cin.header.UserSize() != 0 && m_cin.header.UserSize() != 0xFFFFFFFF) {
|
||||
|
||||
@@ -212,6 +212,8 @@ bool cineon::Header::Check()
|
||||
|
||||
|
||||
|
||||
#ifdef OIIO_DOES_NOT_NEED_THIS
|
||||
|
||||
bool cineon::Header::Write(OutStream *io)
|
||||
{
|
||||
// write the header to the file
|
||||
@@ -272,6 +274,7 @@ bool cineon::Header::WriteOffsetData(OutStream *io)
|
||||
|
||||
return true;
|
||||
}
|
||||
#endif /* OIIO_DOES_NOT_NEED_THIS */
|
||||
|
||||
|
||||
bool cineon::Header::ValidMagicCookie(const U32 magic)
|
||||
@@ -383,6 +386,7 @@ int cineon::GenericHeader::ImageElementCount() const
|
||||
}
|
||||
|
||||
|
||||
#ifdef OIIO_DOES_NOT_NEED_THIS
|
||||
void cineon::GenericHeader::CalculateNumberOfElements()
|
||||
{
|
||||
int i = this->ImageElementCount();
|
||||
@@ -407,6 +411,7 @@ void cineon::Header::CalculateOffsets()
|
||||
|
||||
}
|
||||
}
|
||||
#endif /* OIIO_DOES_NOT_NEED_THIS */
|
||||
|
||||
|
||||
cineon::DataSize cineon::GenericHeader::ComponentDataSize(const int element) const
|
||||
@@ -500,24 +505,24 @@ int cineon::GenericHeader::DataSizeByteCount(const DataSize ds)
|
||||
}
|
||||
|
||||
|
||||
void cineon::IndustryHeader::FilmEdgeCode(char *edge) const
|
||||
void cineon::IndustryHeader::FilmEdgeCode(char *edge, size_t size) const
|
||||
{
|
||||
if (this->filmManufacturingIdCode == 0xff
|
||||
&& this->filmType == 0xff
|
||||
&& this->perfsOffset == 0xff
|
||||
&& this->prefix == 0xffffffff
|
||||
&& this->count == 0xffffffff)
|
||||
*edge = 0;
|
||||
else
|
||||
sprintf(edge, "%02u%02u%02u%06u%04u",
|
||||
(unsigned int)this->filmManufacturingIdCode,
|
||||
(unsigned int)this->filmType,
|
||||
(unsigned int)this->perfsOffset,
|
||||
this->prefix,
|
||||
this->count);
|
||||
if (this->filmManufacturingIdCode == 0xff && this->filmType == 0xff
|
||||
&& this->perfsOffset == 0xff && this->prefix == 0xffffffff
|
||||
&& this->count == 0xffffffff)
|
||||
*edge = 0;
|
||||
else {
|
||||
std::string e = OIIO::Strutil::sprintf(
|
||||
"%02u%02u%02u%06u%04u",
|
||||
(unsigned int)this->filmManufacturingIdCode,
|
||||
(unsigned int)this->filmType,
|
||||
(unsigned int)this->perfsOffset, this->prefix, this->count);
|
||||
OIIO::Strutil::safe_strcpy(edge, e, size);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#ifdef OIIO_DOES_NOT_NEED_THIS
|
||||
void cineon::IndustryHeader::SetFilmEdgeCode(const char *edge)
|
||||
{
|
||||
this->filmManufacturingIdCode = OIIO::Strutil::stoi(OIIO::string_view(edge, 2));
|
||||
@@ -526,6 +531,7 @@ void cineon::IndustryHeader::SetFilmEdgeCode(const char *edge)
|
||||
this->prefix = OIIO::Strutil::stoi(OIIO::string_view(edge + 6, 6));
|
||||
this->count = OIIO::Strutil::stoi(OIIO::string_view(edge + 12, 4));
|
||||
}
|
||||
#endif /* OIIO_DOES_NOT_NEED_THIS */
|
||||
|
||||
|
||||
void cineon::GenericHeader::SetCreationTimeDate(const long sec)
|
||||
|
||||
@@ -955,7 +955,7 @@ namespace cineon
|
||||
* \brief Get the film edge code information that is machine readable
|
||||
* \param edge buffer to write film edge code information (16+1 chars)
|
||||
*/
|
||||
void FilmEdgeCode(char *edge) const;
|
||||
void FilmEdgeCode(char *edge, size_t size) const;
|
||||
|
||||
/*!
|
||||
* \brief Set the film edge code information that is machine readable
|
||||
@@ -1049,6 +1049,7 @@ namespace cineon
|
||||
*/
|
||||
bool Read(InStream *);
|
||||
|
||||
#ifdef OIIO_DOES_NOT_NEED_THIS
|
||||
/*!
|
||||
* \brief Set the Output Stream object to write header to
|
||||
*/
|
||||
@@ -1056,6 +1057,7 @@ namespace cineon
|
||||
|
||||
// write the offset within the header
|
||||
bool WriteOffsetData(OutStream *);
|
||||
#endif
|
||||
|
||||
/*!
|
||||
* \brief Validate the header
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
@PACKAGE_INIT@
|
||||
|
||||
include(CMakeFindDependencyMacro)
|
||||
@@ -17,6 +21,28 @@ if (NOT @OPENIMAGEIO_CONFIG_DO_NOT_FIND_IMATH@ AND NOT OPENIMAGEIO_CONFIG_DO_NOT
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
if (NOT @OIIO_USING_FMT_LOCAL@ AND NOT @INTERNALIZE_FMT@)
|
||||
find_dependency(fmt)
|
||||
endif ()
|
||||
|
||||
if (NOT @BUILD_SHARED_LIBS@)
|
||||
# This is required in static library builds, as e.g. PNG::PNG appears among
|
||||
# INTERFACE_LINK_LIBRARIES. If the project does not know about PNG target, it will cause
|
||||
# configuration error about unknown targets being linked in.
|
||||
find_dependency(TIFF)
|
||||
if (@JPEG_FOUND@)
|
||||
find_dependency(JPEG)
|
||||
endif()
|
||||
if (@PNG_FOUND@)
|
||||
find_dependency(PNG)
|
||||
endif()
|
||||
# The following have the same problem except that INTERFACE_LINK_LIBRARIES use
|
||||
# TARGET_NAME_IF_EXISTS, so the error only happens on link time.
|
||||
if (@OIIO_TBB@)
|
||||
find_dependency(TBB)
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
# Compute the installation prefix relative to this file. Note that cmake files are installed
|
||||
# to ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} (see OIIO_CONFIG_INSTALL_DIR)
|
||||
get_filename_component(_CURR_INSTALL_LIBDIR "${CMAKE_CURRENT_LIST_DIR}/../../" ABSOLUTE)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# Copyright 2008-present Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
# Is the named package "enabled" via our disabling convention? If either
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# SPDX-License-Identifier: BSD-3-Clause and Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# Copyright 2008-present Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
|
||||
|
||||
+32
-19
@@ -1,5 +1,5 @@
|
||||
# Copyright 2008-present Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
###########################################################################
|
||||
@@ -160,6 +160,9 @@ if (CMAKE_COMPILER_IS_CLANG OR CMAKE_COMPILER_IS_APPLECLANG)
|
||||
# Don't warn about using unknown preprocessor symbols in `#if`
|
||||
add_compile_options ("-Wno-expansion-to-defined")
|
||||
endif ()
|
||||
if (CMAKE_GENERATOR MATCHES "Xcode")
|
||||
add_compile_options ("-Wno-shorten-64-to-32")
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
if (CMAKE_COMPILER_IS_GNUCC AND NOT (CMAKE_COMPILER_IS_CLANG OR CMAKE_COMPILER_IS_APPLECLANG))
|
||||
@@ -347,9 +350,9 @@ include (CheckLibraryExists)
|
||||
# Check if we need libatomic on this platform. We shouldn't on mainstream
|
||||
# x86/x86_64, but might on some other platforms.
|
||||
#
|
||||
if (NOT MSVC AND NOT APPLE)
|
||||
if (NOT MSVC AND NOT APPLE AND NOT ANDROID)
|
||||
cmake_push_check_state ()
|
||||
check_cxx_source_runs(
|
||||
check_cxx_source_compiles(
|
||||
"#include <atomic>
|
||||
#include <cstdint>
|
||||
std::atomic<uint64_t> x {0};
|
||||
@@ -405,8 +408,8 @@ option (CODECOV "Build code coverage tests" OFF)
|
||||
if (CODECOV AND (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG))
|
||||
message (STATUS "Compiling for code coverage analysis")
|
||||
add_compile_options (-ftest-coverage -fprofile-arcs)
|
||||
add_link_options (-ftest-coverage -fprofile-arcs)
|
||||
add_definitions ("-D${PROJ_NAME}_CODE_COVERAGE=1")
|
||||
link_libraries(gcov)
|
||||
endif ()
|
||||
|
||||
|
||||
@@ -420,22 +423,9 @@ if (SANITIZE AND (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG))
|
||||
foreach (feature ${SANITIZE_FEATURE_LIST})
|
||||
message (STATUS " sanitize feature: ${feature}")
|
||||
add_compile_options (-fsanitize=${feature})
|
||||
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=${feature}")
|
||||
set (CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -fsanitize=${feature}")
|
||||
set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fsanitize=${feature}")
|
||||
add_link_options (-fsanitize=${feature})
|
||||
endforeach()
|
||||
add_compile_options (-g -fno-omit-frame-pointer)
|
||||
if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
|
||||
set (SANITIZE_ON_LINUX 1)
|
||||
endif ()
|
||||
if (CMAKE_COMPILER_IS_GNUCC AND ${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
|
||||
add_compile_options ("-fuse-ld=gold")
|
||||
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=gold")
|
||||
set (CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -fuse-ld=gold")
|
||||
set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fuse-ld=gold")
|
||||
set (SANITIZE_LIBRARIES "asan;pthread")
|
||||
# set (SANITIZE_LIBRARIES "asan" "ubsan")
|
||||
endif()
|
||||
if (CMAKE_COMPILER_IS_GNUCC)
|
||||
# turn on glibcxx extra annotations to find vector writes past end
|
||||
add_definitions ("-D_GLIBCXX_SANITIZE_VECTOR=1")
|
||||
@@ -444,6 +434,29 @@ if (SANITIZE AND (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG))
|
||||
endif ()
|
||||
|
||||
|
||||
###########################################################################
|
||||
# Fortification and hardening options
|
||||
#
|
||||
# In modern gcc and clang, FORTIFY_SOURCE provides buffer overflow checks
|
||||
# (with some compiler-assisted deduction of buffer lengths) for the following
|
||||
# functions: memcpy, mempcpy, memmove, memset, strcpy, stpcpy, strncpy,
|
||||
# strcat, strncat, sprintf, vsprintf, snprintf, vsnprintf, gets.
|
||||
#
|
||||
# We try to avoid these unsafe functions anyway, but it's good to have the
|
||||
# extra protection, at least as an extra set of checks during CI. Some users
|
||||
# may also wish to enable it at some level if they are deploying it in a
|
||||
# security-sensitive environment. FORTIFY_SOURCE=3 may have minor performance
|
||||
# impact, though FORTIFY_SOURCE=2 should not have a measurable effect on
|
||||
# performance versus not doing any fortification. All fortification levels are
|
||||
# not available in all compilers.
|
||||
|
||||
set (FORTIFY_SOURCE "0" CACHE STRING "Turn on Fortification level (0, 1, 2, 3)")
|
||||
if (FORTIFY_SOURCE AND (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG))
|
||||
message (STATUS "Compiling with _FORTIFY_SOURCE=${FORTIFY_SOURCE}")
|
||||
add_compile_options (-D_FORTIFY_SOURCE=${FORTIFY_SOURCE})
|
||||
endif ()
|
||||
|
||||
|
||||
###########################################################################
|
||||
# clang-tidy options
|
||||
#
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# Copyright 2008-present Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
###########################################################################
|
||||
@@ -23,7 +23,7 @@ message (STATUS "${ColorReset}")
|
||||
|
||||
set (OIIO_LOCAL_DEPS_PATH "${CMAKE_SOURCE_DIR}/ext/dist" CACHE STRING
|
||||
"Local area for dependencies added to CMAKE_PREFIX_PATH")
|
||||
list (APPEND CMAKE_PREFIX_PATH ${CMAKE_SOURCE_DIR}/ext/dist)
|
||||
list (APPEND CMAKE_PREFIX_PATH ${OIIO_LOCAL_DEPS_PATH})
|
||||
|
||||
include (ExternalProject)
|
||||
|
||||
@@ -61,7 +61,10 @@ message (STATUS "Boost_COMPONENTS = ${Boost_COMPONENTS}")
|
||||
# cmake output (e.g. boost 1.70.0, cmake <= 3.14). Specifically it fails
|
||||
# to set the expected variables printed below. So until that's fixed
|
||||
# force FindBoost.cmake to use the original brute force path.
|
||||
set (Boost_NO_BOOST_CMAKE ON)
|
||||
if (NOT DEFINED Boost_NO_BOOST_CMAKE)
|
||||
set (Boost_NO_BOOST_CMAKE ON)
|
||||
endif ()
|
||||
|
||||
checked_find_package (Boost REQUIRED
|
||||
VERSION_MIN 1.53
|
||||
COMPONENTS ${Boost_COMPONENTS}
|
||||
@@ -78,6 +81,8 @@ endif ()
|
||||
include_directories (SYSTEM "${Boost_INCLUDE_DIRS}")
|
||||
link_directories ("${Boost_LIBRARY_DIRS}")
|
||||
|
||||
option (OIIO_DISABLE_BOOST_STACKTRACE "Disable use of Boost stacktrace." OFF)
|
||||
|
||||
# end Boost setup
|
||||
###########################################################################
|
||||
|
||||
@@ -106,7 +111,7 @@ include_directories(BEFORE ${IMATH_INCLUDES} ${OPENEXR_INCLUDES})
|
||||
if (MSVC AND NOT LINKSTATIC)
|
||||
add_definitions (-DOPENEXR_DLL) # Is this needed for new versions?
|
||||
endif ()
|
||||
if (OPENEXR_VERSION VERSION_GREATER_EQUAL 3.0)
|
||||
if (OpenEXR_VERSION VERSION_GREATER_EQUAL 3.0)
|
||||
set (OIIO_USING_IMATH 3)
|
||||
else ()
|
||||
set (OIIO_USING_IMATH 2)
|
||||
@@ -246,21 +251,22 @@ checked_find_package (R3DSDK) # RED camera
|
||||
set (NUKE_VERSION "7.0" CACHE STRING "Nuke version to target")
|
||||
checked_find_package (Nuke)
|
||||
|
||||
checked_find_package (OpenGL) # used for iv
|
||||
|
||||
# Qt -- used for iv
|
||||
set (qt5_modules Core Gui Widgets)
|
||||
if (OPENGL_FOUND)
|
||||
list (APPEND qt5_modules OpenGL)
|
||||
endif ()
|
||||
option (USE_QT "Use Qt if found" ON)
|
||||
checked_find_package (Qt5 COMPONENTS ${qt5_modules})
|
||||
if (USE_QT AND NOT Qt5_FOUND AND APPLE)
|
||||
message (STATUS " If you think you installed qt5 with Homebrew and it still doesn't work,")
|
||||
message (STATUS " try: export PATH=/usr/local/opt/qt5/bin:$PATH")
|
||||
if (USE_QT)
|
||||
checked_find_package (OpenGL) # used for iv
|
||||
endif ()
|
||||
if (USE_QT AND OPENGL_FOUND)
|
||||
checked_find_package (Qt6 COMPONENTS Core Gui Widgets OpenGLWidgets)
|
||||
if (NOT Qt6_FOUND)
|
||||
checked_find_package (Qt5 COMPONENTS Core Gui Widgets OpenGL)
|
||||
endif ()
|
||||
if (NOT Qt5_FOUND AND NOT Qt6_FOUND AND APPLE)
|
||||
message (STATUS " If you think you installed qt with Homebrew and it still doesn't work,")
|
||||
message (STATUS " try: export PATH=/usr/local/opt/qt/bin:$PATH")
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
|
||||
|
||||
|
||||
###########################################################################
|
||||
@@ -308,7 +314,8 @@ endmacro()
|
||||
|
||||
option (BUILD_FMT_FORCE "Force local download/build of fmt even if installed" OFF)
|
||||
option (BUILD_MISSING_FMT "Local download/build of fmt if not installed" ON)
|
||||
set (BUILD_FMT_VERSION "8.0.0" CACHE STRING "Preferred fmtlib/fmt version, when downloading/building our own")
|
||||
option (INTERNALIZE_FMT "Copy fmt headers into <install>/include/OpenImageIO/detail/fmt" ON)
|
||||
set (BUILD_FMT_VERSION "9.0.0" CACHE STRING "Preferred fmtlib/fmt version, when downloading/building our own")
|
||||
|
||||
macro (find_or_download_fmt)
|
||||
# If we weren't told to force our own download/build of fmt, look
|
||||
@@ -337,9 +344,16 @@ macro (find_or_download_fmt)
|
||||
endif ()
|
||||
endif ()
|
||||
set (FMT_INCLUDE_DIR "${FMT_INSTALL_DIR}/include")
|
||||
set (OIIO_USING_FMT_LOCAL TRUE)
|
||||
else ()
|
||||
set (OIIO_USING_FMT_LOCAL FALSE)
|
||||
endif ()
|
||||
checked_find_package (fmt REQUIRED)
|
||||
endmacro()
|
||||
|
||||
find_or_download_fmt()
|
||||
include_directories (${FMT_INCLUDES})
|
||||
|
||||
if (FMT_VERSION VERSION_EQUAL 90100
|
||||
AND GCC_VERSION VERSION_GREATER 0.0 AND NOT GCC_VERSION VERSION_GREATER 7.2)
|
||||
message (WARNING "${ColorRed}fmt 9.1 is known to not work with gcc <= 7.2${ColorReset}")
|
||||
endif ()
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# SPDX-License-Identifier: BSD-3-Clause and Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
# Macro to add an executable build target. The executable name can be
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
# Module to find DCMTK
|
||||
#
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
#
|
||||
# This module will first look into the directories defined by the variables:
|
||||
# - DCMTK_ROOT, DCMTK_INCLUDE_PATH, DCMTK_LIBRARY_PATH
|
||||
#
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
# BSD license.
|
||||
#
|
||||
# Modifications:
|
||||
# Copyright 2008-present Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: BSD-3-Clause and Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
if (FFMPEG_INCLUDES AND FFMPEG_LIBRARIES)
|
||||
@@ -68,12 +68,14 @@ if (FFMPEG_INCLUDES)
|
||||
string (REGEX MATCHALL "[0-9]+[.0-9]+" LIBAVCODEC_VERSION_MAJOR "${TMP}")
|
||||
file(STRINGS "${FFMPEG_INCLUDES}/libavcodec/version.h" TMP
|
||||
REGEX "^#define LIBAVCODEC_VERSION_MINOR .*$")
|
||||
string (REGEX MATCHALL "[0-9]+[.0-9]+" LIBAVCODEC_VERSION_MINOR "${TMP}")
|
||||
string (REGEX MATCHALL "[0-9]+[.]?[0-9]*" LIBAVCODEC_VERSION_MINOR "${TMP}")
|
||||
file(STRINGS "${FFMPEG_INCLUDES}/libavcodec/version.h" TMP
|
||||
REGEX "^#define LIBAVCODEC_VERSION_MICRO .*$")
|
||||
string (REGEX MATCHALL "[0-9]+[.0-9]+" LIBAVCODEC_VERSION_MICRO "${TMP}")
|
||||
set (LIBAVCODEC_VERSION "${LIBAVCODEC_VERSION_MAJOR}.${LIBAVCODEC_VERSION_MINOR}.${LIBAVCODEC_VERSION_MICRO}")
|
||||
if (LIBAVCODEC_VERSION VERSION_GREATER_EQUAL 59.37.100)
|
||||
if (LIBAVCODEC_VERSION VERSION_GREATER_EQUAL 60.3.100)
|
||||
set (FFMPEG_VERSION 6.0)
|
||||
elseif (LIBAVCODEC_VERSION VERSION_GREATER_EQUAL 59.37.100)
|
||||
set (FFMPEG_VERSION 5.1)
|
||||
elseif (LIBAVCODEC_VERSION VERSION_GREATER_EQUAL 59.18.100)
|
||||
set (FFMPEG_VERSION 5.0)
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: BSD-3-Clause and Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
# - Try to find libjpeg-turbo
|
||||
# Once done, this will define
|
||||
#
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
# Module to find LIBHEIF
|
||||
#
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
#
|
||||
# This module will first look into the directories defined by the variables:
|
||||
# - Libheif_ROOT, LIBHEIF_INCLUDE_PATH, LIBHEIF_LIBRARY_PATH
|
||||
#
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
# - CMake find module for Nuke
|
||||
#
|
||||
# If requesting a specific release, the Nuke version string must be converted
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
# - Find OpenCV
|
||||
# Find the OpenCV library
|
||||
# This module defines
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
# Module to find OpenColorIO
|
||||
#
|
||||
# This module will first look into the directories hinted by the variables:
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: BSD-3-Clause and Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
# Module to find OpenEXR and Imath.
|
||||
#
|
||||
# I'm afraid this is a mess, due to needing to support a wide range of
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: BSD-3-Clause and Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
# Module to find OpenJpeg.
|
||||
#
|
||||
# This module will first look into the directories defined by the variables:
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
# - Find OPENVDB library
|
||||
# Find the native OPENVDB includes and library
|
||||
# This module defines
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
# - Try to find R3D SDK
|
||||
#
|
||||
# Set R3DSDK_ROOT Environment variable to root of the SDK
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
# Find Robinmap
|
||||
#
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
#
|
||||
# Sets the usual variables expected for find_package scripts:
|
||||
#
|
||||
# ROBINMAP_INCLUDES - header location
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
# Module to find Webp
|
||||
#
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
#
|
||||
# This module will first look into the directories defined by the variables:
|
||||
# - Webp_ROOT, WEBP_INCLUDE_PATH, WEBP_LIBRARY_PATH
|
||||
#
|
||||
@@ -40,18 +44,18 @@ if (WebP_FOUND)
|
||||
set (WEBP_INCLUDES "${WEBP_INCLUDE_DIR}")
|
||||
set (WEBP_LIBRARIES ${WEBP_LIBRARY} ${WEBPDEMUX_LIBRARY})
|
||||
|
||||
if (NOT TARGET WebP::WebP)
|
||||
add_library(WebP::WebP UNKNOWN IMPORTED)
|
||||
set_target_properties(WebP::WebP PROPERTIES
|
||||
if (NOT TARGET WebP::webp)
|
||||
add_library(WebP::webp UNKNOWN IMPORTED)
|
||||
set_target_properties(WebP::webp PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES ${WEBP_INCLUDES})
|
||||
set_property(TARGET WebP::WebP APPEND PROPERTY
|
||||
set_property(TARGET WebP::webp APPEND PROPERTY
|
||||
IMPORTED_LOCATION ${WEBP_LIBRARY})
|
||||
endif ()
|
||||
if (NOT TARGET WebP::WebPDemux)
|
||||
add_library(WebP::WebPDemux UNKNOWN IMPORTED)
|
||||
set_target_properties(WebP::WebPDemux PROPERTIES
|
||||
if (NOT TARGET WebP::webpdemux)
|
||||
add_library(WebP::webpdemux UNKNOWN IMPORTED)
|
||||
set_target_properties(WebP::webpdemux PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES ${WEBP_INCLUDES})
|
||||
set_property(TARGET WebP::WebPDemux APPEND PROPERTY
|
||||
set_property(TARGET WebP::webpdemux APPEND PROPERTY
|
||||
IMPORTED_LOCATION ${WEBPDEMUX_LIBRARY})
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
# Find fmt library
|
||||
#
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
#
|
||||
# Sets the usual variables expected for find_package scripts:
|
||||
#
|
||||
# FMT_INCLUDES - header location
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
# Find the pugixml XML parsing library.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio/
|
||||
|
||||
#########################################################################
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# Copyright 2008-present Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
# Python-related options.
|
||||
@@ -81,7 +81,7 @@ macro (setup_python_module)
|
||||
#
|
||||
# Declare the libraries it should link against
|
||||
target_link_libraries (${target_name}
|
||||
PRIVATE ${lib_LIBS} ${SANITIZE_LIBRARIES})
|
||||
PRIVATE ${lib_LIBS})
|
||||
|
||||
set (_module_LINK_FLAGS "${VISIBILITY_MAP_COMMAND} ${EXTRA_DSO_LINK_ARGS}")
|
||||
if (UNIX AND NOT APPLE)
|
||||
|
||||
+100
-70
@@ -1,5 +1,5 @@
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio/
|
||||
|
||||
include (CTest)
|
||||
@@ -22,28 +22,6 @@ set(OIIO_TESTSUITE_IMAGEDIR "${PROJECT_BINARY_DIR}/testsuite" CACHE PATH
|
||||
|
||||
|
||||
|
||||
# oiio_set_testenv() - add environment variables to a test
|
||||
#
|
||||
# Usage:
|
||||
# oiio_set_testenv ( testname
|
||||
# testsuite - The root of all tests ${CMAKE_SOURCE_DIR}/testsuite
|
||||
# testsrcdir - Current test directory in ${CMAKE_SOURCE_DIR}
|
||||
# testdir - Current test sandbox in ${CMAKE_BINARY_DIR}
|
||||
# IMAGEDIR - Optional path to image reference/compare directory)
|
||||
#
|
||||
macro (oiio_set_testenv testname testsuite testsrcdir testdir IMAGEDIR)
|
||||
set_property(TEST ${testname} PROPERTY ENVIRONMENT
|
||||
"OIIO_TESTSUITE_ROOT=${testsuite}"
|
||||
";OIIO_TESTSUITE_SRC=${testsrcdir}"
|
||||
";OIIO_TESTSUITE_CUR=${testdir}")
|
||||
if (NOT ${IMAGEDIR} STREQUAL "")
|
||||
set_property(TEST ${testname} APPEND PROPERTY ENVIRONMENT
|
||||
"OIIO_TESTSUITE_IMAGEDIR=${IMAGEDIR}")
|
||||
endif()
|
||||
endmacro ()
|
||||
|
||||
|
||||
|
||||
# oiio_add_tests() - add a set of test cases.
|
||||
#
|
||||
# Usage:
|
||||
@@ -52,6 +30,8 @@ endmacro ()
|
||||
# [ URL http://find.reference.cases.here.com ]
|
||||
# [ FOUNDVAR variable_name ... ]
|
||||
# [ ENABLEVAR variable_name ... ]
|
||||
# [ SUFFIX suffix ]
|
||||
# [ ENVIRONMENT "VAR=value" ... ]
|
||||
# )
|
||||
#
|
||||
# The optional argument IMAGEDIR is used to check whether external test images
|
||||
@@ -65,8 +45,13 @@ endmacro ()
|
||||
# The optional ENABLEVAR introduces variables (typically ENABLE_Foo) that
|
||||
# if existing and yet false, will skip the test.
|
||||
#
|
||||
# The optional SUFFIX is appended to the test name.
|
||||
#
|
||||
# The optinonal ENVIRONMENT is a list of environment variables to set for the
|
||||
# test.
|
||||
#
|
||||
macro (oiio_add_tests)
|
||||
cmake_parse_arguments (_ats "" "" "URL;IMAGEDIR;LABEL;FOUNDVAR;ENABLEVAR;TESTNAME" ${ARGN})
|
||||
cmake_parse_arguments (_ats "" "SUFFIX;TESTNAME" "URL;IMAGEDIR;LABEL;FOUNDVAR;ENABLEVAR;ENVIRONMENT" ${ARGN})
|
||||
# Arguments: <prefix> <options> <one_value_keywords> <multi_value_keywords> args...
|
||||
set (_ats_testdir "${OIIO_TESTSUITE_IMAGEDIR}/${_ats_IMAGEDIR}")
|
||||
# If there was a FOUNDVAR param specified and that variable name is
|
||||
@@ -84,6 +69,16 @@ macro (oiio_add_tests)
|
||||
set (_test_disabled 1)
|
||||
endif ()
|
||||
endforeach ()
|
||||
if (0 AND OpenColorIO_VERSION VERSION_GREATER_EQUAL 2.2)
|
||||
# For OCIO 2.2+, have the testsuite use the default built-in config
|
||||
list (APPEND _ats_ENVIRONMENT "OCIO=ocio://default"
|
||||
"OIIO_TESTSUITE_OCIOCONFIG=ocio://default")
|
||||
else ()
|
||||
# For OCIO 2.1 and earlier, have the testsuite use one we have in
|
||||
# the testsuite directory.
|
||||
list (APPEND _ats_ENVIRONMENT "OCIO=../common/OpenColorIO/nuke-default/config.ocio"
|
||||
"OIIO_TESTSUITE_OCIOCONFIG=../common/OpenColorIO/nuke-default/config.ocio")
|
||||
endif ()
|
||||
if (_test_disabled)
|
||||
message (STATUS "Skipping test(s) ${_ats_UNPARSED_ARGUMENTS} because of disabled ${_ats_ENABLEVAR}")
|
||||
elseif (_ats_IMAGEDIR AND NOT EXISTS ${_ats_testdir})
|
||||
@@ -95,13 +90,16 @@ macro (oiio_add_tests)
|
||||
else ()
|
||||
# Add the tests if all is well.
|
||||
set (_has_generator_expr TRUE)
|
||||
set (_testsuite "${CMAKE_SOURCE_DIR}/testsuite")
|
||||
foreach (_testname ${_ats_UNPARSED_ARGUMENTS})
|
||||
set (_testsuite "${CMAKE_SOURCE_DIR}/testsuite")
|
||||
set (_testsrcdir "${_testsuite}/${_testname}")
|
||||
set (_testdir "${CMAKE_BINARY_DIR}/testsuite/${_testname}")
|
||||
set (_testdir "${CMAKE_BINARY_DIR}/testsuite/${_testname}${_ats_SUFFIX}")
|
||||
if (_ats_TESTNAME)
|
||||
set (_testname "${_ats_TESTNAME}")
|
||||
endif ()
|
||||
if (_ats_SUFFIX)
|
||||
set (_testname "${_testname}${_ats_SUFFIX}")
|
||||
endif ()
|
||||
if (_ats_LABEL MATCHES "broken")
|
||||
set (_testname "${_testname}-broken")
|
||||
endif ()
|
||||
@@ -114,32 +112,17 @@ macro (oiio_add_tests)
|
||||
|
||||
file (MAKE_DIRECTORY "${_testdir}")
|
||||
|
||||
add_test ( NAME ${_testname}
|
||||
COMMAND ${_runtest} )
|
||||
add_test ( NAME ${_testname} COMMAND ${_runtest} )
|
||||
set_property(TEST ${_testname} APPEND PROPERTY ENVIRONMENT
|
||||
"OIIO_TESTSUITE_ROOT=${_testsuite}"
|
||||
"OIIO_TESTSUITE_SRC=${_testsrcdir}"
|
||||
"OIIO_TESTSUITE_CUR=${_testdir}"
|
||||
${_ats_ENVIRONMENT})
|
||||
if (NOT ${_ats_testdir} STREQUAL "")
|
||||
set_property(TEST ${_testname} APPEND PROPERTY ENVIRONMENT
|
||||
"OIIO_TESTSUITE_IMAGEDIR=${_ats_testdir}")
|
||||
endif()
|
||||
|
||||
oiio_set_testenv("${_testname}" "${_testsuite}"
|
||||
"${_testsrcdir}" "${_testdir}" "${_ats_testdir}")
|
||||
|
||||
# For texture tests, add a second test using batch mode as well.
|
||||
if (_testname MATCHES "texture")
|
||||
set (_testname ${_testname}.batch)
|
||||
set (_testdir ${_testdir}.batch)
|
||||
set (_runtest ${Python_EXECUTABLE} "${CMAKE_SOURCE_DIR}/testsuite/runtest.py" ${_testdir})
|
||||
if (MSVC_IDE)
|
||||
set (_runtest ${_runtest} --devenv-config $<CONFIGURATION>
|
||||
--solution-path "${CMAKE_BINARY_DIR}" )
|
||||
endif ()
|
||||
file (MAKE_DIRECTORY "${_testdir}")
|
||||
add_test ( NAME "${_testname}"
|
||||
COMMAND env TESTTEX_BATCH=1 ${_runtest} )
|
||||
|
||||
oiio_set_testenv("${_testname}" "${_testsuite}"
|
||||
"${_testsrcdir}" "${_testdir}.batch" "${_ats_testdir}")
|
||||
endif ()
|
||||
|
||||
#if (VERBOSE)
|
||||
# message (STATUS "TEST ${_testname}: ${_runtest}")
|
||||
#endif ()
|
||||
endforeach ()
|
||||
if (VERBOSE)
|
||||
message (STATUS "TESTS: ${_ats_UNPARSED_ARGUMENTS}")
|
||||
@@ -157,6 +140,7 @@ macro (oiio_add_all_tests)
|
||||
# Freestanding tests:
|
||||
oiio_add_tests (
|
||||
cmake-consumer
|
||||
iinfo igrep
|
||||
nonwhole-tiles
|
||||
oiiotool
|
||||
oiiotool-composite oiiotool-control oiiotool-copy
|
||||
@@ -172,12 +156,16 @@ macro (oiio_add_all_tests)
|
||||
missingcolor
|
||||
null
|
||||
rational
|
||||
)
|
||||
|
||||
set (all_texture_tests
|
||||
texture-derivs texture-fill
|
||||
texture-flipt texture-gettexels texture-gray
|
||||
texture-interp-bicubic
|
||||
texture-blurtube
|
||||
texture-crop texture-cropover
|
||||
texture-half texture-uint16
|
||||
texture-icwrite
|
||||
texture-interp-bilinear
|
||||
texture-interp-closest
|
||||
texture-levels-stochaniso
|
||||
@@ -194,7 +182,15 @@ macro (oiio_add_all_tests)
|
||||
texture-width0blur
|
||||
texture-wrapfill
|
||||
texture-fat texture-skinny
|
||||
texture-stats
|
||||
texture-threadtimes
|
||||
texture-env
|
||||
)
|
||||
oiio_add_tests (${all_texture_tests})
|
||||
# Duplicate texture tests with batch mode
|
||||
oiio_add_tests (${all_texture_tests}
|
||||
SUFFIX ".batch"
|
||||
ENVIRONMENT TESTTEX_BATCH=1)
|
||||
|
||||
# Tests that require oiio-images:
|
||||
oiio_add_tests (gpsread
|
||||
@@ -207,14 +203,15 @@ macro (oiio_add_all_tests)
|
||||
|
||||
# Add tests that require the Python bindings.
|
||||
#
|
||||
# We also exclude these tests if this is a sanitizer build on Linux,
|
||||
# because the Python interpreter itself won't be linked with the right asan
|
||||
# We also exclude these tests if this is a sanitizer build, because the
|
||||
# Python interpreter itself won't be linked with the right asan
|
||||
# libraries to run correctly.
|
||||
if (USE_PYTHON AND NOT BUILD_OIIOUTIL_ONLY AND NOT SANITIZE_ON_LINUX)
|
||||
if (USE_PYTHON AND NOT BUILD_OIIOUTIL_ONLY AND NOT SANITIZE)
|
||||
oiio_add_tests (
|
||||
python-colorconfig
|
||||
python-deep
|
||||
python-imagebuf
|
||||
python-imagecache
|
||||
python-imageoutput
|
||||
python-imagespec
|
||||
python-paramlist
|
||||
@@ -232,16 +229,15 @@ macro (oiio_add_all_tests)
|
||||
oiio_add_tests (oiiotool-color
|
||||
FOUNDVAR OpenColorIO_FOUND)
|
||||
|
||||
if (NOT DEFINED ENV{${PROJECT_NAME}_CI})
|
||||
oiio_add_tests (texture-icwrite)
|
||||
endif ()
|
||||
|
||||
# List testsuites for specific formats or features which might be not found
|
||||
# or be intentionally disabled, or which need special external reference
|
||||
# images from the web that if not found, should skip the tests:
|
||||
oiio_add_tests (bmp
|
||||
ENABLEVAR ENABLE_BMP
|
||||
IMAGEDIR oiio-images/bmpsuite)
|
||||
oiio_add_tests (cineon
|
||||
ENABLEVAR ENABLE_CINEON
|
||||
IMAGEDIR oiio-images URL "Recent checkout of oiio-images")
|
||||
oiio_add_tests (dpx
|
||||
ENABLEVAR ENABLE_DPX
|
||||
IMAGEDIR oiio-images URL "Recent checkout of oiio-images")
|
||||
@@ -275,19 +271,33 @@ macro (oiio_add_all_tests)
|
||||
FOUNDVAR OPENJPEG_FOUND
|
||||
IMAGEDIR j2kp4files_v1_5
|
||||
URL http://www.itu.int/net/ITU-T/sigdb/speimage/ImageForm-s.aspx?val=10100803)
|
||||
oiio_add_tests (openexr-suite openexr-multires openexr-chroma
|
||||
openexr-v2 openexr-window perchannel
|
||||
oiiotool-deep
|
||||
set (all_openexr_tests
|
||||
openexr-suite openexr-multires openexr-chroma
|
||||
openexr-v2 openexr-window perchannel oiiotool-deep)
|
||||
oiio_add_tests (${all_openexr_tests}
|
||||
ENVIRONMENT OPENIMAGEIO_OPTIONS=openexr:core=0
|
||||
IMAGEDIR openexr-images
|
||||
URL http://github.com/AcademySoftwareFoundation/openexr-images)
|
||||
if (NOT DEFINED ENV{${PROJECT_NAME}_CI})
|
||||
oiio_add_tests (openexr-damaged
|
||||
if (OpenEXR_VERSION VERSION_GREATER_EQUAL 3.1)
|
||||
# For OpenEXR >= 3.1, be sure to test with the core option on
|
||||
oiio_add_tests (${all_openexr_tests}
|
||||
SUFFIX ".core"
|
||||
ENVIRONMENT OPENIMAGEIO_OPTIONS=openexr:core=1
|
||||
IMAGEDIR openexr-images
|
||||
URL http://github.com/AcademySoftwareFoundation/openexr-images)
|
||||
endif ()
|
||||
# if (NOT DEFINED ENV{${PROJECT_NAME}_CI})
|
||||
# oiio_add_tests (openexr-damaged
|
||||
# IMAGEDIR openexr-images
|
||||
# URL http://github.com/AcademySoftwareFoundation/openexr-images)
|
||||
# endif ()
|
||||
oiio_add_tests (openvdb texture-texture3d
|
||||
FOUNDVAR OpenVDB_FOUND ENABLEVAR ENABLE_OpenVDB)
|
||||
oiio_add_tests (png
|
||||
oiio_add_tests (openvdb texture-texture3d
|
||||
SUFFIX ".batch"
|
||||
ENVIRONMENT TESTTEX_BATCH=1
|
||||
FOUNDVAR OpenVDB_FOUND ENABLEVAR ENABLE_OpenVDB)
|
||||
oiio_add_tests (png png-damaged
|
||||
ENABLEVAR ENABLE_PNG
|
||||
IMAGEDIR oiio-images)
|
||||
oiio_add_tests (pnm
|
||||
@@ -310,6 +320,18 @@ macro (oiio_add_all_tests)
|
||||
oiio_add_tests (targa
|
||||
ENABLEVAR ENABLE_TARGA
|
||||
IMAGEDIR oiio-images)
|
||||
if (USE_PYTHON AND NOT SANITIZE)
|
||||
oiio_add_tests (targa-thumbnail
|
||||
ENABLEVAR ENABLE_TARGA
|
||||
IMAGEDIR oiio-images)
|
||||
endif()
|
||||
if (NOT WIN32)
|
||||
oiio_add_tests (term
|
||||
ENABLEVAR ENABLE_TERM)
|
||||
# I just could not get this test to work on Windows CI. The test fails
|
||||
# when comparing the output, but the saved artifacts compare just fine
|
||||
# on my system. Maybe someone will come back to this.
|
||||
endif ()
|
||||
oiio_add_tests (tiff-suite tiff-depths tiff-misc
|
||||
IMAGEDIR oiio-images/libtiffpic)
|
||||
oiio_add_tests (webp
|
||||
@@ -337,15 +359,22 @@ function (oiio_get_test_data name)
|
||||
# Arguments: <prefix> <options> <one_value_keywords> <multi_value_keywords> args...
|
||||
if (IS_DIRECTORY "${OIIO_LOCAL_TESTDATA_ROOT}/${name}"
|
||||
AND NOT EXISTS "${CMAKE_BINARY_DIR}/testsuite/${name}")
|
||||
set (_ogtd_LINK_RESULT "")
|
||||
if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.14)
|
||||
# Just make a link if we can
|
||||
message (STATUS "Linking ${name} from ${OIIO_LOCAL_TESTDATA_ROOT}/../${name}")
|
||||
message (STATUS "Linking ${name} from ${OIIO_LOCAL_TESTDATA_ROOT}/${name}")
|
||||
file (CREATE_LINK "${OIIO_LOCAL_TESTDATA_ROOT}/${name}"
|
||||
"${CMAKE_BINARY_DIR}/testsuite/${name}"
|
||||
SYMBOLIC COPY_ON_ERROR)
|
||||
else ()
|
||||
# Older cmake -- copy
|
||||
message (STATUS "Copying ${name} from ${OIIO_LOCAL_TESTDATA_ROOT}/../${name}")
|
||||
SYMBOLIC RESULT _ogtd_LINK_RESULT)
|
||||
# Note: Using 'COPY_ON_ERROR' in the above command should have prevented the need to
|
||||
# have the manual fall-back below. However, there's been at least one case where a user
|
||||
# noticed that copying did not happen if creating the link failed (CMake 3.24). We can
|
||||
# adjust this in the future if CMake behavior improves.
|
||||
message (STATUS "Link result ${_ogtd_LINK_RESULT}")
|
||||
endif ()
|
||||
if (NOT _ogtd_LINK_RESULT EQUAL 0)
|
||||
# Older cmake or failure to link -- copy
|
||||
message (STATUS "Copying ${name} from ${OIIO_LOCAL_TESTDATA_ROOT}/${name}")
|
||||
file (COPY "${OIIO_LOCAL_TESTDATA_ROOT}/${name}"
|
||||
DESTINATION "${CMAKE_BINARY_DIR}/testsuite")
|
||||
endif ()
|
||||
@@ -374,7 +403,8 @@ function (oiio_setup_test_data)
|
||||
oiio_get_test_data (oiio-images
|
||||
REPO https://github.com/OpenImageIO/oiio-images.git)
|
||||
oiio_get_test_data (openexr-images
|
||||
REPO https://github.com/AcademySoftwareFoundation/openexr-images.git)
|
||||
REPO https://github.com/AcademySoftwareFoundation/openexr-images.git
|
||||
BRANCH main)
|
||||
oiio_get_test_data (fits-images)
|
||||
oiio_get_test_data (j2kp4files_v1_5)
|
||||
endfunction ()
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# Copyright 2008-present Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# Copyright Contributors to the OpenImageIO project.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
|
||||
add_oiio_plugin (ddsinput.cpp)
|
||||
|
||||
+18
-15
@@ -1,5 +1,5 @@
|
||||
// Copyright 2008-present Contributors to the OpenImageIO project.
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
// Copyright Contributors to the OpenImageIO project.
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
// https://github.com/OpenImageIO/oiio
|
||||
|
||||
#pragma once
|
||||
@@ -19,6 +19,10 @@ namespace DDS_pvt {
|
||||
#define DDS_4CC_ATI1 DDS_MAKE4CC('A', 'T', 'I', '1')
|
||||
#define DDS_4CC_ATI2 DDS_MAKE4CC('A', 'T', 'I', '2')
|
||||
#define DDS_4CC_DX10 DDS_MAKE4CC('D', 'X', '1', '0')
|
||||
#define DDS_4CC_RXGB DDS_MAKE4CC('R', 'X', 'G', 'B')
|
||||
#define DDS_4CC_BC4U DDS_MAKE4CC('B', 'C', '4', 'U')
|
||||
#define DDS_4CC_BC5U DDS_MAKE4CC('B', 'C', '5', 'U')
|
||||
|
||||
#define DDS_FORMAT_BC4_UNORM 80
|
||||
#define DDS_FORMAT_BC5_UNORM 83
|
||||
#define DDS_FORMAT_BC6H_UF16 95
|
||||
@@ -43,24 +47,23 @@ enum class Compression {
|
||||
/// images.
|
||||
///
|
||||
enum {
|
||||
DDS_PF_ALPHA = 0x00000001, ///< image has alpha channel
|
||||
DDS_PF_FOURCC = 0x00000004, ///< image is compressed
|
||||
DDS_PF_LUMINANCE = 0x00020000, ///< image has luminance data
|
||||
DDS_PF_RGB = 0x00000040, ///< image has RGB data
|
||||
DDS_PF_YUV = 0x00000200 ///< image has YUV data
|
||||
DDS_PF_ALPHA = 0x00000001, ///< image has alpha channel
|
||||
DDS_PF_ALPHAONLY = 0x00000002, ///< image has only the alpha channel
|
||||
DDS_PF_FOURCC = 0x00000004, ///< image is compressed
|
||||
DDS_PF_LUMINANCE = 0x00020000, ///< image has luminance data
|
||||
DDS_PF_RGB = 0x00000040, ///< image has RGB data
|
||||
DDS_PF_YUV = 0x00000200, ///< image has YUV data
|
||||
DDS_PF_NORMAL = 0x80000000u, ///< image is a tangent space normal map
|
||||
};
|
||||
|
||||
/// DDS pixel format structure.
|
||||
///
|
||||
typedef struct {
|
||||
uint32_t size; ///< structure size, must be 32
|
||||
uint32_t flags; ///< flags to indicate valid fields
|
||||
uint32_t fourCC; ///< compression four-character code
|
||||
uint32_t bpp; ///< bits per pixel
|
||||
uint32_t rmask; ///< bitmask for the red channel
|
||||
uint32_t gmask; ///< bitmask for the green channel
|
||||
uint32_t bmask; ///< bitmask for the blue channel
|
||||
uint32_t amask; ///< bitmask for the alpha channel
|
||||
uint32_t size; ///< structure size, must be 32
|
||||
uint32_t flags; ///< flags to indicate valid fields
|
||||
uint32_t fourCC; ///< compression four-character code
|
||||
uint32_t bpp; ///< bits per pixel
|
||||
uint32_t masks[4]; ///< bitmasks for the r,g,b,a channels
|
||||
} dds_pixformat;
|
||||
|
||||
/// DDS caps flags, field 1.
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user