Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 56 additions & 0 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -150,3 +150,59 @@ jobs:
path: |
build_win64/Release/*
build_win64/Debug/*
package_wheels:
runs-on: ${{ matrix.os }}
strategy:
matrix:
python-version: ["3.9"]
os: [ ubuntu-latest, ubuntu-24.04-arm, windows-latest, macos-13, macos-latest ]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
os: [ ubuntu-latest, ubuntu-24.04-arm, windows-latest, macos-13, macos-latest ]
os: [ ubuntu-latest, ubuntu-24.04-arm, windows-latest, macos-14, macos-latest ]

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, I didn't see this one up here before pressing merge ... I will add it to the publish PR.

steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1
submodules: recursive
- name: Install Dependencies
run: |
sudo apt-get update
sudo apt-get install -y libglfw3-dev libgtk-3-dev
if: matrix.os == 'ubuntu-latest' || matrix.os == 'ubuntu-24.04-arm'
- name: Install UV
uses: astral-sh/setup-uv@v6
with:
version: "0.8.22"
python-version: ${{ matrix.python-version }}
- name: Install Python
run: uv python install
- name: Build Python wheel
run: |
uv build --wheel
- name: Archive Python wheel
uses: actions/upload-artifact@v4
with:
name: wheel-${{ matrix.os }}
path: dist/*.whl
package_sdist:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1
submodules: recursive
- name: Install Dependencies
run: |
sudo apt-get update
sudo apt-get install -y libglfw3-dev libgtk-3-dev
- name: Install UV
uses: astral-sh/setup-uv@v6
with:
version: "0.8.22"
- name: Install Python
run: uv python install
- name: Build Python wheel
run: |
uv build --sdist
- name: Archive Python sdist
uses: actions/upload-artifact@v4
with:
name: sdist
path: dist/*.tar.gz
6 changes: 5 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
cmake_minimum_required(VERSION 3.10)
cmake_policy(SET CMP0076 NEW)

project(raven VERSION 1.0)
# Project version is stored in VERSION.txt
file(READ "${CMAKE_CURRENT_LIST_DIR}/VERSION.txt" RAVEN_VERSION)
string(STRIP "${RAVEN_VERSION}" RAVEN_VERSION)

project(raven VERSION ${RAVEN_VERSION})

set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64")

Expand Down
19 changes: 19 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,25 @@ You can load a file into WASM Raven a few ways:

Note: The WASM build of raven is missing some features - see the Help Wanted section below.

## Building (as a Python package)

Raven can be built and embedded inside a Python package for easy distribution alongside other OTIO Python packages.
For simplicity, we recommend using [UV](https://github.com/astral-sh/uv) for builds and running Raven from the Python package.

_Note: Since we don't publish Raven to PyPI yet, you will need to build it yourself._

```shell
# clone the code
git clone --recursive https://github.com/OpenTimelineIO/raven.git
cd raven

# run Raven using UV
uv run --no-editable raven example.otio

# build wheel using UV (wheel file will be in ./dist)
uv build # add '--python <python_version>' to build for a specific Python version
```

## Troubleshooting

If you have trouble building, these hints might help...
Expand Down
1 change: 1 addition & 0 deletions VERSION.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
1.0.0
47 changes: 47 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
[build-system]
requires = ["scikit-build-core"]
build-backend = "scikit_build_core.build"

[project]
name = "opentimelineio-raven"
dynamic = ["version"]
description = "OpenTimelineIO viewer app made with Dear ImGui."
authors = [
{ name = "Contributors to the OpenTimelineIO project", email = "otio-discussion@lists.aswf.io"}
]
classifiers = [
"Programming Language :: C++",
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"Topic :: Multimedia :: Video",
"Topic :: Multimedia :: Video :: Display",
"Topic :: Multimedia :: Video :: Non-Linear Editor",
"Topic :: Software Development :: Libraries :: Python Modules",
"License :: OSI Approved :: Apache Software License",
"Operating System :: OS Independent",
"Natural Language :: English"
]
keywords = ["film", "tv", "editing", "editorial", "edit", "non-linear", "time", "otio", "opentimelineio", "raven"]
license = { file = "LICENSE.txt" }
readme = "README.md"
requires-python = ">=3.9,<3.13"

[project.scripts]
raven = "otio_raven._wrapper:main"

[project.urls]
"Homepage" = "https://github.com/OpenTimelineIO/raven"
"Bug Tracker" = "https://github.com/OpenTimelineIO/raven/issues"

[tool.scikit-build]
cmake.version = ">=3.10"
cmake.build-type = "Release"
wheel.packages = ["python/otio_raven"]
wheel.install-dir = "otio_raven"
wheel.py-api = "py3"

[tool.scikit-build.metadata.version]
provider = "scikit_build_core.metadata.regex"
input = "VERSION.txt"
regex = "^(?P<version>.+)"
result = "{version}"
Empty file added python/otio_raven/__init__.py
Empty file.
8 changes: 8 additions & 0 deletions python/otio_raven/_wrapper.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import sys
import subprocess
import os

def main():
package_dir = os.path.dirname(__file__)
exe_path = os.path.join(package_dir, "bin", "raven")
sys.exit(subprocess.call([exe_path] + sys.argv[1:]))