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

Release v1.2 #52

Merged
merged 6 commits into from
Dec 8, 2023
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
34 changes: 31 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,24 @@ name: Release
on:
workflow_dispatch:
jobs:
release:
runs-on: windows-2019
binary_release:
strategy:
fail-fast: false
matrix:
include:
- name: windows
os: windows-2019
- name: macos-xcode-universal
os: macos-11

runs-on: ${{ matrix.os }}

steps:
- uses: maxim-lobanov/setup-xcode@v1
if: ${{ contains(matrix.name, 'xcode') }}
with:
xcode-version: latest-stable

- uses: actions/checkout@v3
with:
fetch-depth: 0
Expand All @@ -16,6 +31,7 @@ jobs:
cmake -P bmx/release/source_release.cmake

- name: Win64 binary release
if: ${{ contains(matrix.name, 'windows') }}
shell: bash
working-directory: ../
run: |
Expand All @@ -25,6 +41,17 @@ jobs:
cd bmx-*
cmake -P release/win64_binary_release.cmake

- name: MacOS Universal binary release
if: ${{ contains(matrix.os, 'macos') }}
shell: bash
working-directory: ../
run: |
mkdir binary_release
cd binary_release
unzip -q ../source_release/bmx-*.zip
cd bmx-*
cmake -P release/macos_universal_binary_release.cmake

# actions/upload-artifact doesn't allow . and .. in paths
- name: Move artefacts into working directory
shell: bash
Expand All @@ -33,6 +60,7 @@ jobs:
mv ../binary_release/bmx-*/out/package ./binary_release

- name: Upload source release
if: ${{ contains(matrix.name, 'windows') }}
uses: actions/upload-artifact@v3
with:
name: source-release
Expand All @@ -43,6 +71,6 @@ jobs:
- name: Upload binary release
uses: actions/upload-artifact@v3
with:
name: binary-release
name: binary-release-${{ matrix.name }}
path: |
binary_release/*.zip
34 changes: 34 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,39 @@
# bmx Changelog

## v1.2

### Breaking changes

* None

### Features

* Add support for a templated output filename that can automatically follow IMF file naming conventions (https://github.com/bbc/bmx/pull/6)
* Various improvements to file access over HTTP (https://github.com/bbc/bmx/pull/9 and https://github.com/bbc/bmx/pull/15)
* Write app usage messages to stdout for less, and show a shortened usage on error (https://github.com/bbc/bmx/pull/20)
* Add precharge and rollout properties to the mxf2raw output (https://github.com/bbc/bmx/pull/26 and https://github.com/bbc/bmx/pull/41)
* Extract colormetry properties from AVC-Intra bitstreams (https://github.com/bbc/bmx/pull/29)
* Improve descriptor property guesses for RDD 36 / 44 (ProRes) (https://github.com/bbc/bmx/pull/32)
* Don't include the `manufacturer` attribute in RDD 6 XML output (https://github.com/bbc/bmx/pull/42)
* Add provisional support for ADM and other audio metadata RIFF chunks in MXF (https://github.com/bbc/bmx/pull/51)

### Bug fixes

* Various updates to improve compliance with RDD 36 / 44 (ProRes) (https://github.com/bbc/bmx/pull/25)
* Ensure all Index Table Segments have been written (in separate Partitions) before repeating in the Footer Partition (https://github.com/bbc/bmx/pull/31 and https://github.com/bbc/bmx/pull/35)
* Stricter commandline option processing to help avoid misinterpretation (https://github.com/bbc/bmx/pull/40)
* Increase the KLV Fill at the end of the Header Partition to ensure minimum requirements are met (https://github.com/bbc/bmx/pull/43)

### Build changes

* Fix the git version returned by bmx (https://github.com/bbc/bmx/pull/8)
* Fix the include path used for the uuid library (https://github.com/bbc/bmx/pull/19)
* Improve static library builds and add the git version code to the bmx libraries (https://github.com/bbc/bmx/pull/16)
* Add ARGS to the Dockerfile to allow customisation of cmake config options (https://github.com/bbc/bmx/pull/21)
* Move the libMXF and libMXF++ code into the bmx `deps/` folder and archive the repos (https://github.com/bbc/bmx/pull/27)
* Build improvements to support MacOS and different Windows runtime libraries (https://github.com/bbc/bmx/pull/46)
* Use gnuinstalldirs and don't limit pkg-config generation (https://github.com/bbc/bmx/pull/47 and https://github.com/bbc/bmx/pull/49)

## v1.1

### Breaking changes
Expand Down
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ else()
endif()

project(bmx
VERSION 1.1
VERSION 1.2
DESCRIPTION "A C++ library and set of utilities to read and write the SMPTE ST 377-1 MXF file format"
HOMEPAGE_URL https://github.com/bbc/bmx
LANGUAGES C CXX
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ sudo make install

The installation may require root permissions. Add `-DCMAKE_INSTALL_PREFIX=<install dir>` (fill in `<install dir>`) to the first `cmake` command above to change the installation directory.

Run `ldconfig` to update the runtime linker cache. This avoids library link errors similar to "error while loading shared libraries".
If not using macOS, run `ldconfig` to update the runtime linker cache. This avoids library link errors similar to "error while loading shared libraries".

```bash
sudo /sbin/ldconfig
Expand Down Expand Up @@ -239,7 +239,7 @@ This example runs `bmxtranswrap` from input `./sources/in.mxf` to output `./dest

## Source and Binary Distributions

Source distributions, including dependencies for the Windows build, and Windows binaries are made available in this GitHub repo. Older distributions can be found on [SourceForge](https://sourceforge.net/projects/bmxlib/files/).
Source distributions, including dependencies, and binaries are made available in the [Releases](https://github.com/bbc/bmx/releases) on GitHub. Older distributions can be found on [SourceForge](https://sourceforge.net/projects/bmxlib/files/).

Source and binary distributions are generally only created when a new feature is required for creating standard compliant sample files for example, or when a release hasn't been made for a long time.

Expand Down
2 changes: 1 addition & 1 deletion deps/libMXF/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ else()
endif()

project(libMXF
VERSION 1.1
VERSION 1.2
DESCRIPTION "Low-level C library for reading and writing the SMPTE ST 377-1 MXF file format"
HOMEPAGE_URL https://github.com/bbc/libMXF
LANGUAGES C CXX
Expand Down
2 changes: 1 addition & 1 deletion deps/libMXF/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ make test
sudo make install
```

Run `ldconfig` to update the runtime linker cache. This avoids library link errors similar to "error while loading shared libraries".
If not using macOS, run `ldconfig` to update the runtime linker cache. This avoids library link errors similar to "error while loading shared libraries".

```bash
sudo /sbin/ldconfig
Expand Down
2 changes: 1 addition & 1 deletion deps/libMXFpp/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ else()
endif()

project(libMXF++
VERSION 1.1
VERSION 1.2
DESCRIPTION "C++ wrapper library for libMXF that supports reading and writing the SMPTE ST 377-1 MXF file format"
HOMEPAGE_URL https://github.com/bbc/libMXFpp
LANGUAGES CXX
Expand Down
2 changes: 1 addition & 1 deletion deps/libMXFpp/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ make test
sudo make install
```

Run `ldconfig` to update the runtime linker cache. This avoids library link errors similar to "error while loading shared libraries".
If not using macOS, run `ldconfig` to update the runtime linker cache. This avoids library link errors similar to "error while loading shared libraries".

```bash
sudo /sbin/ldconfig
Expand Down
21 changes: 0 additions & 21 deletions release/binary_licenses/LICENSE_expat.txt

This file was deleted.

83 changes: 83 additions & 0 deletions release/macos_universal_binary_release.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
# Create a MacOS Universal binary release of bmx.

cmake_minimum_required(VERSION 3.12 FATAL_ERROR)

if(NOT DEFINED BMX_BRANCH)
set(BMX_BRANCH main)
endif()
if(NOT DEFINED USE_GIT_CLONE)
set(USE_GIT_CLONE OFF)
endif()

include(${CMAKE_CURRENT_LIST_DIR}/common.cmake)


function(copy_and_rename_file source dest)
get_filename_component(dest_dir ${dest} DIRECTORY)
get_filename_component(source_name ${source} NAME)
file(COPY ${source} DESTINATION ${dest_dir})
file(RENAME ${dest_dir}/${source_name} ${dest})
endfunction()


if(USE_GIT_CLONE)
# Clone bmx
set(bmx_dir "${CMAKE_CURRENT_BINARY_DIR}/bmx")
if(EXISTS ${bmx_dir})
message(FATAL_ERROR "Can't continue with clean release as 'bmx' directory already exists")
endif()
run_command("${CMAKE_CURRENT_BINARY_DIR}" git clone https://github.com/bbc/bmx.git)
run_command("${bmx_dir}" git checkout ${BMX_BRANCH})
else()
get_filename_component(bmx_dir "${CMAKE_CURRENT_LIST_DIR}/.." REALPATH)
if(EXISTS ${bmx_dir}/out)
message(FATAL_ERROR "Can't continue with clean release as 'out' sub-directory already exists")
endif()
endif()

# Create build, install and package directories
set(build_dir "${bmx_dir}/out/build")
file(MAKE_DIRECTORY ${build_dir})
set(install_dir "${bmx_dir}/out/install")
file(MAKE_DIRECTORY ${install_dir})

extract_version("${bmx_dir}/CMakeLists.txt" bmx_version)
set(package_dir "${bmx_dir}/out/package")
set(bmx_package_dir "${package_dir}/bmx-macos-universal-binary-${bmx_version}")
file(MAKE_DIRECTORY ${bmx_package_dir})

# Configure, build, test and install
run_command("${build_dir}" cmake -G Xcode -DCMAKE_INSTALL_PREFIX=../install -DCMAKE_OSX_ARCHITECTURES=arm64\\\\\;x86_64 -DBUILD_SHARED_LIBS=OFF -DBMX_BUILD_URIPARSER_SOURCE=ON -DBMX_BUILD_WITH_LIBCURL=ON ../../)
run_command("${build_dir}" cmake --build . --config Release)
run_command("${build_dir}" ctest --output-on-failure -C Release)
run_command("${build_dir}" cmake --build . --config Release --target install)

# Create the package
file(MAKE_DIRECTORY ${bmx_package_dir}/bin)
file(GLOB bin_files ${install_dir}/bin/*)
file(COPY ${bin_files} DESTINATION ${bmx_package_dir}/bin)

file(MAKE_DIRECTORY ${bmx_package_dir}/licenses)
file(GLOB license_files ${bmx_dir}/release/binary_licenses/LICENSE_*.txt)
file(COPY ${license_files} DESTINATION ${bmx_package_dir}/licenses)
if(EXISTS ${bmx_dir}/deps/cmake-git-version-tracking)
copy_and_rename_file(${bmx_dir}/deps/cmake-git-version-tracking/LICENSE ${bmx_package_dir}/licenses/LICENSE_cmake_git_version_tracking.txt)
else()
copy_and_rename_file(${build_dir}/_deps/bmx_git_version-src/LICENSE ${bmx_package_dir}/licenses/LICENSE_cmake_git_version_tracking.txt)
endif()
if(EXISTS ${bmx_dir}/deps/uriparser)
copy_and_rename_file(${bmx_dir}/deps/uriparser/COPYING ${bmx_package_dir}/licenses/LICENSE_uriparser.txt)
else()
copy_and_rename_file(${build_dir}/_deps/liburiparser-src/COPYING ${bmx_package_dir}/licenses/LICENSE_uriparser.txt)
endif()

file(COPY ${bmx_dir}/COPYING DESTINATION ${bmx_package_dir})
file(COPY ${bmx_dir}/README.md DESTINATION ${bmx_package_dir})
file(COPY ${bmx_dir}/CHANGELOG.md DESTINATION ${bmx_package_dir})

file(MAKE_DIRECTORY ${bmx_package_dir}/docs)
file(GLOB docs_files ${bmx_dir}/docs/*)
file(COPY ${docs_files} DESTINATION ${bmx_package_dir}/docs)

run_command("${package_dir}" ${CMAKE_COMMAND} -E tar "cfv" bmx-macos-universal-binary-${bmx_version}.zip --format=zip bmx-macos-universal-binary-${bmx_version})
message("Created bmx-macos-universal-binary-${bmx_version}.zip")
Loading