Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add ht support #4

Open
wants to merge 69 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
69 commits
Select commit Hold shift + click to select a range
66158f8
Fix typos (#1954)
rex4539 Jan 15, 2025
3ce6c2b
Update security policy regarding backporting patches (#1961)
cary-ilm Jan 26, 2025
2692789
Fix installation of Imath and libdeflate in windows CI (#1966)
cary-ilm Jan 30, 2025
86ba71d
Add HT support
palemieux Sep 25, 2024
889f7d3
WIP
palemieux Oct 11, 2024
88cb38d
Compiles again
palemieux Oct 11, 2024
9f4ab1e
Compiles
palemieux Oct 11, 2024
fd9bf4f
Finish adding OJPH
palemieux Oct 11, 2024
faa4335
Compiles with KDU
palemieux Oct 11, 2024
2816797
Passes test
palemieux Oct 11, 2024
f080acf
Fixing bugs
palemieux Oct 11, 2024
fa34f68
Add NLT support
palemieux Oct 11, 2024
eb9a0ab
Add OpenJPH fallback
palemieux Oct 11, 2024
4554ea9
fix Cmake/compile without KDU, enable exrconv, add docker
michaeldsmith Nov 5, 2024
69cd7dd
Add support for 32-bit and sub-sampling
palemieux Dec 13, 2024
cc9fce7
Remove validate install steps
palemieux Jan 7, 2025
3f27e60
First step towards solving install
palemieux Jan 7, 2025
f412678
Second step towards solving install
palemieux Jan 7, 2025
c88d9c3
Added missing file to Bazel
palemieux Jan 9, 2025
9df2ee0
Fix compression types enumeration
palemieux Jan 10, 2025
55c4878
Removed HT-specific compression
palemieux Jan 10, 2025
84ad033
Increase CI timeout
palemieux Jan 10, 2025
d922f30
Add OpenJPH to build artifacts
palemieux Jan 10, 2025
8b2b300
Fix OpenJPH configuration
palemieux Jan 10, 2025
677af7a
Try overriding OpenJPH commands
palemieux Jan 10, 2025
54e3e51
Try overriding OpenJPH commands
palemieux Jan 10, 2025
cbe06d7
Clean-up windows
palemieux Jan 10, 2025
9269735
Add missing header file
palemieux Jan 10, 2025
66c98dd
Remove exrconv and exrperf
palemieux Jan 10, 2025
fdbfce4
Fixed install check
palemieux Jan 10, 2025
8c2053a
Further tweaks to install and bazel
palemieux Jan 10, 2025
9f6678a
Fix OpenJPH Ctest
palemieux Jan 10, 2025
059ad89
Fix windows install
palemieux Jan 10, 2025
2c5ba22
Improve Bazel support
palemieux Jan 15, 2025
483c853
Fix install
palemieux Jan 15, 2025
0b675f7
Fix install
palemieux Jan 15, 2025
ee54e89
Fix Bazel bug
palemieux Jan 15, 2025
7a75446
Fix Bazel OpenJPH commit
palemieux Jan 15, 2025
c49bf9a
Fix Bazel OpenJPH commit
palemieux Jan 15, 2025
77e9900
Fix Bazel OpenJPH commit
palemieux Jan 15, 2025
43c8b0b
Fix Bazel
palemieux Jan 15, 2025
4da3a15
Remove KDU
palemieux Jan 16, 2025
311f3a5
Remove leftovers
palemieux Jan 16, 2025
1279197
Fix minor typos and formatting
palemieux Jan 17, 2025
3e691ca
Remove HT compression and keep HT256
palemieux Jan 20, 2025
8dd9b02
Add find_package option
palemieux Jan 25, 2025
9a2a819
Fix OpenJPH install
palemieux Jan 25, 2025
1c954b9
Fix CI
palemieux Jan 25, 2025
8aee3dd
Refactor OpenJPH import
palemieux Jan 26, 2025
6504489
Fix OpenJPH install
palemieux Jan 26, 2025
ce2f439
Fix OpenJPH install
palemieux Jan 26, 2025
93fbda6
Fix OpenJPH install
palemieux Jan 26, 2025
4b66356
Fix OpenJPH install
palemieux Jan 26, 2025
e1a4090
Fix OpenJPH install
palemieux Jan 26, 2025
013e74b
Fix OpenJPH install
palemieux Jan 26, 2025
7f5c723
Fix Bazel
palemieux Jan 26, 2025
71ae416
Fix install manifests
palemieux Jan 26, 2025
a830355
Fix install manifests
palemieux Jan 27, 2025
c5e8a70
Fix install manifests
palemieux Jan 27, 2025
94cf26c
Remove OpenJPH from install
palemieux Jan 27, 2025
7c68d9e
Remove OpenJPH from install
palemieux Jan 27, 2025
d055585
Fix Windows and Macos
palemieux Jan 27, 2025
7145160
Fix Windows
palemieux Jan 27, 2025
2bdbf77
Fix Windows
palemieux Jan 27, 2025
4f0f93c
Add pkgConfig
palemieux Jan 27, 2025
3ea494c
Add error processing
palemieux Jan 27, 2025
af38a02
Improve error reporting
palemieux Jan 28, 2025
3d57dae
Fix CI
palemieux Jan 30, 2025
2992755
Revert change re upload-artifact
palemieux Jan 30, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .github/workflows/ci_steps.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ on:
type: string
OPENEXR_FORCE_INTERNAL_DEFLATE:
type: string
OPENEXR_FORCE_INTERNAL_OPENJPH:
type: string
BUILD_TESTING:
type: string
namespace:
Expand Down Expand Up @@ -76,18 +78,26 @@ jobs:
# Pre-install Imath so the builds validate finding the external installation
if: ${{ inputs.OPENEXR_FORCE_INTERNAL_IMATH == 'OFF' }}
run: share/ci/scripts/install_imath.sh main
shell: bash

- name: Install libdeflate
# Pre-install libdeflate so the builds validate finding the external installation
if: ${{ inputs.OPENEXR_FORCE_INTERNAL_DEFLATE == 'OFF' }}
run: share/ci/scripts/install_libdeflate.sh master
shell: bash

- name: Install OpenJPH
# Pre-install OpenJPH so the builds validate finding the external installation
if: ${{ inputs.OPENEXR_FORCE_INTERNAL_OPENJPH == 'OFF' }}
run: share/ci/scripts/install_openjph.sh master

- name: Install help2man
# TODO: this could go in the ASWF Linux docker
# container. Also, it doesn't currently work for Windows, so
# the windows builds have docs disabled.
if: ${{ inputs.OPENEXR_INSTALL_DOCS == 'ON' }}
run: share/ci/scripts/install_help2man.sh
shell: bash

- name: Create build directories
run: mkdir _install _build _examples
Expand All @@ -110,6 +120,7 @@ jobs:
-DOPENEXR_BUILD_TOOLS=${{ inputs.OPENEXR_BUILD_TOOLS }} \
-DOPENEXR_FORCE_INTERNAL_IMATH=${{ inputs.OPENEXR_FORCE_INTERNAL_IMATH }} \
-DOPENEXR_FORCE_INTERNAL_DEFLATE=${{ inputs.OPENEXR_FORCE_INTERNAL_DEFLATE }} \
-DOPENEXR_OJPH_USE_FINDPACKAGE=${{ inputs.OPENEXR_FORCE_INTERNAL_OPENJPH != 'ON' }} \
-DBUILD_TESTING=${{ inputs.BUILD_TESTING }} \
-DOPENEXR_RUN_FUZZ_TESTS=OFF \
-DCMAKE_VERBOSE_MAKEFILE=ON"
Expand Down
6 changes: 6 additions & 0 deletions .github/workflows/ci_workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ jobs:
OPENEXR_BUILD_TOOLS: ${{ matrix.OPENEXR_BUILD_TOOLS || 'ON' }}
OPENEXR_FORCE_INTERNAL_IMATH: ${{ matrix.OPENEXR_FORCE_INTERNAL_IMATH || 'OFF' }}
OPENEXR_FORCE_INTERNAL_DEFLATE: ${{ matrix.OPENEXR_FORCE_INTERNAL_DEFLATE || 'OFF' }}
OPENEXR_FORCE_INTERNAL_OPENJPH: ${{ matrix.OPENEXR_FORCE_INTERNAL_OPENJPH || 'OFF' }}
BUILD_TESTING: ${{ matrix.BUILD_TESTING || 'ON' }}
namespace: ${{ matrix.namespace }}
validate_install: ${{ matrix.validate_install || 'ON' }}
Expand Down Expand Up @@ -107,6 +108,7 @@ jobs:
OPENEXR_BUILD_TOOLS: 'OFF'
OPENEXR_FORCE_INTERNAL_IMATH: 'ON'
OPENEXR_FORCE_INTERNAL_DEFLATE: 'ON'
OPENEXR_FORCE_INTERNAL_OPENJPH: 'ON'
BUILD_TESTING: 'OFF'

- build: 6
Expand Down Expand Up @@ -141,6 +143,7 @@ jobs:
OPENEXR_BUILD_TOOLS: ${{ matrix.OPENEXR_BUILD_TOOLS || 'ON' }}
OPENEXR_FORCE_INTERNAL_IMATH: ${{ matrix.OPENEXR_FORCE_INTERNAL_IMATH || 'OFF' }}
OPENEXR_FORCE_INTERNAL_DEFLATE: ${{ matrix.OPENEXR_FORCE_INTERNAL_DEFLATE || 'OFF' }}
OPENEXR_FORCE_INTERNAL_OPENJPH: ${{ matrix.OPENEXR_FORCE_INTERNAL_OPENJPH || 'OFF' }}
BUILD_TESTING: ${{ matrix.BUILD_TESTING || 'ON' }}
validate_install: ${{ matrix.validate_install || 'ON' }}
strategy:
Expand Down Expand Up @@ -170,6 +173,7 @@ jobs:
OPENEXR_BUILD_TOOLS: 'OFF'
OPENEXR_FORCE_INTERNAL_IMATH: 'ON'
OPENEXR_FORCE_INTERNAL_DEFLATE: 'ON'
OPENEXR_FORCE_INTERNAL_OPENJPH: 'ON'
BUILD_TESTING: 'OFF'

- build: 6
Expand All @@ -195,6 +199,7 @@ jobs:
OPENEXR_BUILD_TOOLS: ${{ matrix.OPENEXR_BUILD_TOOLS || 'ON' }}
OPENEXR_FORCE_INTERNAL_IMATH: ${{ matrix.OPENEXR_FORCE_INTERNAL_IMATH || 'OFF' }}
OPENEXR_FORCE_INTERNAL_DEFLATE: ${{ matrix.OPENEXR_FORCE_INTERNAL_DEFLATE || 'OFF' }}
OPENEXR_FORCE_INTERNAL_OPENJPH: ${{ matrix.OPENEXR_FORCE_INTERNAL_OPENJPH || 'OFF' }}
BUILD_TESTING: ${{ matrix.BUILD_TESTING || 'ON' }}
validate_install: ${{ matrix.validate_install || 'ON' }}
strategy:
Expand Down Expand Up @@ -224,6 +229,7 @@ jobs:
OPENEXR_BUILD_TOOLS: 'OFF'
OPENEXR_FORCE_INTERNAL_IMATH: 'ON'
OPENEXR_FORCE_INTERNAL_DEFLATE: 'ON'
OPENEXR_FORCE_INTERNAL_OPENJPH: 'ON'
BUILD_TESTING: 'OFF'

- build: 6
Expand Down
7 changes: 7 additions & 0 deletions BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,9 @@ cc_library(
"src/lib/OpenEXRCore/internal_dwa_simd.h",
"src/lib/OpenEXRCore/internal_file.h",
"src/lib/OpenEXRCore/internal_float_vector.h",
"src/lib/OpenEXRCore/internal_ht.cpp",
"src/lib/OpenEXRCore/internal_ht_common.h",
"src/lib/OpenEXRCore/internal_ht_common.cpp",
"src/lib/OpenEXRCore/internal_huf.c",
"src/lib/OpenEXRCore/internal_huf.h",
"src/lib/OpenEXRCore/internal_memory.h",
Expand Down Expand Up @@ -262,6 +265,7 @@ cc_library(
visibility = ["//visibility:public"],
deps = [
"@imath",
"@openjph",
"@libdeflate//:deflate",
],
)
Expand Down Expand Up @@ -308,6 +312,7 @@ cc_library(
"src/lib/OpenEXR/ImfGenericInputFile.cpp",
"src/lib/OpenEXR/ImfGenericOutputFile.cpp",
"src/lib/OpenEXR/ImfHeader.cpp",
"src/lib/OpenEXR/ImfHTCompressor.cpp",
"src/lib/OpenEXR/ImfHuf.cpp",
"src/lib/OpenEXR/ImfIDManifest.cpp",
"src/lib/OpenEXR/ImfIDManifestAttribute.cpp",
Expand Down Expand Up @@ -413,6 +418,7 @@ cc_library(
"src/lib/OpenEXR/ImfGenericInputFile.h",
"src/lib/OpenEXR/ImfGenericOutputFile.h",
"src/lib/OpenEXR/ImfHeader.h",
"src/lib/OpenEXR/ImfHTCompressor.h",
"src/lib/OpenEXR/ImfHuf.h",
"src/lib/OpenEXR/ImfIDManifest.h",
"src/lib/OpenEXR/ImfIDManifestAttribute.h",
Expand Down Expand Up @@ -504,6 +510,7 @@ cc_library(
":IlmThread",
":OpenEXRCore",
"@imath",
"@openjph"
],
)

Expand Down
50 changes: 25 additions & 25 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ remains linear, avoiding the "bubbles" characteristic of the
[GitFlow](https://www.endoflineblog.com/gitflow-considered-harmful)
workflow.

### Use the Fork, Luke.
### Use the Fork, Luke

In a typical workflow, you should **fork** the OpenEXR repository to
your account. This creates a copy of the repository under your user
Expand All @@ -214,7 +214,7 @@ [email protected] mail list.

Contributions should be submitted as GitHub pull requests. See
[Creating a pull request](https://help.github.com/articles/creating-a-pull-request/)
if you're unfamiliar with this concept.
if you're unfamiliar with this concept.

The development cycle for a code change should follow this protocol:

Expand Down Expand Up @@ -336,7 +336,7 @@ code.

* Function return types go on a separate line:

const float &
const float &
Header::pixelAspectRatio () const
{
...
Expand Down Expand Up @@ -452,7 +452,7 @@ each version with three numbers: ``major.minor.patch``, where:

* ``major`` - indicates incompatible API changes
* ``minor`` - indicates functionality added in a backwards-compatible manner
* ``patch`` - indicates backwards-compatible bug fixes
* ``patch`` - indicates backwards-compatible bug fixes

## Contributing to the Website

Expand All @@ -474,7 +474,7 @@ Building the website requires that ``sphinx``, ``breathe``, and
``doxygen`` are installed. It further requires the [sphinx-press-theme]
(https://pypi.org/project/sphinx-press-theme). Complete dependencies
are described in the [requirements.txt](website/requirements.txtg)
file.
file.

On Debian/Ubuntu Linux:

Expand All @@ -498,7 +498,7 @@ browser to preview the resulting website, that is, load
``file://<build-directory>/website/sphinx/index.html`` into your web
browser.

Once you submit a PR, a check labled ``docs/readthedocs.org:openexr``
Once you submit a PR, a check labeled ``docs/readthedocs.org:openexr``
will validate the build. Click on the ``Details`` link to
preview. Also, a link to this preview will be added automatically to
the PR description.
Expand Down Expand Up @@ -550,11 +550,11 @@ The preferred workflow is:

c. Increment ``OPENEXR_VERSION_PATCH`` in
[src/lib/OpenEXRCore/openexr_version.h](src/lib/OpenEXRCore/openexr_version.h)

d. Update the ``IMATH_TAG`` setting in
[cmake/OpenEXRSetup.cmake](cmake/OpenEXRSetup.cmake) to
correspond to the proper Imath release.

e. Add release notes to [CHANGES.md](CHANGES.md):

- Generate a list of links to merged pull requests.
Expand Down Expand Up @@ -589,16 +589,16 @@ The preferred workflow is:

- If there are any public CVE's, mention them explicitly with a
link to the CVE registry item.

- Provide an executive summary of the patch changes, in a few
sentences as well as bullet points if appropriate.

- Choose a proposed release date at least several days in
advance.

f. If there are any public CVE's, reference them in
[SECURITY.md](SECURITY.md).

g. Submit the PR for others to review. The PR should go *to the
release branch, not ``main``*, obviously.

Expand All @@ -611,9 +611,9 @@ The preferred workflow is:
i. If further fixes come in that need to go into the release, push
them to the PR branch. It's not absolutely essential that all
changes to the release branch go in via a PR. The PR is simply a
convient forum for publicly discussing and reviewing the
convenient forum for publicly discussing and reviewing the
composition of the release.

2. Tag the release with a ``-rc`` "release candidate" tag,
e.g. ``v3.1.9-rc``.

Expand All @@ -636,7 +636,7 @@ The preferred workflow is:

Create the release from the latest ``--rc`` tag, and give it a name
that begins with ``v``, i.e. ``v3.1.9``.

Save the release as a "draft".

6. Wait at least 48 hours, to give the community time to discover and
Expand Down Expand Up @@ -666,16 +666,16 @@ The preferred workflow is:
with your GitHub account and git config.

b. Create a signed tag with the release name via `git tag -s v3.1.9`.

c. Push the tag via `git push --tags`

8. Publish the release

a. Click the "Publish release" button on the GitHub release draft

b. Send an email to ``[email protected]`` officially
annoucing the release.
announcing the release.

9. Update the ``release`` branch, which should always point to the
most recent patch of the most recent minor release, i.e. the most
preferred release.
Expand All @@ -694,7 +694,7 @@ The preferred workflow is:
the associated commit as well.

- Also include in this PR edits to [``docs/news.rst``](docs/news.rst)
that add an announcment of the release.
that add an announcement of the release.

11. After review/merge of the updates to ``docs/news.rst``, build the
website at https://readthedocs.org/projects/openexr.
Expand Down Expand Up @@ -740,15 +740,15 @@ To create a new release from the ``main`` branch:

- If there are any public CVE's, mention them explicitly with a
link to the CVE registry item.

- Submit this change as a separate PR.

3. Add a mention of the release to [``docs/news.rst``](docs/news.rst)

- Submit this change as a separate PR.

4. Increment the ``OPENEXR_LIB_SOVERSION`` setting in [CMakeLists.txt](CMakeLists.txt).

- The SO version increases whenever, and only when, the ABI changes
in non-backwards-compatible ways. Consistent with the semantic
versioning policy, this usually happens at major and minor
Expand All @@ -770,7 +770,7 @@ To create a new release from the ``main`` branch:
of the release with link to the release candidate tag. Include the
release notes from [CHANGES.md](CHANGES.md) for review.

9. If additonal fixes need to go in before release:
9. If additional fixes need to go in before release:

a. Merge commits to the release branch. Push them directly, no need
for a pull request.
Expand All @@ -790,7 +790,7 @@ To create a new release from the ``main`` branch:

- Create the release from the latest ``--rc`` tag, and give it a name
that begins with ``v`` and ends in ``0``, e.g. ``v3.2.0``.

- Save the release as a "draft".

11. Wait at least 48 hours after the email announcement.
Expand All @@ -800,8 +800,8 @@ To create a new release from the ``main`` branch:
a. Click the "Publish release" button on the GitHub release draft

b. Send an email to ``[email protected]`` officially
annoucing the release.
announcing the release.

13. Update the ``release`` branch, which should always point to the
most recent release.

Expand Down
11 changes: 11 additions & 0 deletions MODULE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ module(

bazel_dep(name = "bazel_skylib", version = "1.7.1")
bazel_dep(name = "imath")
bazel_dep(name = "openjph")
bazel_dep(name = "libdeflate")
bazel_dep(name = "platforms", version = "0.0.10")

Expand All @@ -30,3 +31,13 @@ archive_override(
strip_prefix = "libdeflate-master",
urls = ["https://github.com/ebiggers/libdeflate/archive/refs/heads/master.zip"],
)

archive_override(
module_name = "openjph",
patches = [
"//bazel:openjph_add_build_file.patch",
"//bazel:openjph_module_dot_bazel.patch",
],
strip_prefix = "OpenJPH-add-export",
urls = ["https://github.com/palemieux/OpenJPH/archive/refs/heads/add-export.zip"],
)
Loading
Loading