blob: 0b2e771ecab1b5f7286c96e3f5a35add46846872 [file] [log] [blame]
Name: ffmpeg
URL: http://ffmpeg.org/
License: LGPL 2.1
License File: CREDITS.fuchsia
Upstream Git: git://source.ffmpeg.org/ffmpeg.git
Last Upstream Merge: 6a97ba521558ce131fe839eed2d51ff745280e1d, Feb 11 2018
Description:
This file documents the layout of the Fuchsia copy of FFmpeg, some common
tasks, and how to create the build files and related configurations.
FFmpeg Layout:
==============
Fuchsia's copy of FFmpeg is a fork of the upstream git repository, see the
tags above for the latest merged upstream revision. All of the
Fuchsia-specific bits, minus the gn files, are located under the fuchsia/
folder off the root.
BUILD.gn: Has the targets for building FFmpeg for Fuchsia.
ffmpeg_generated.gni: Pregenerated listing of files necessary to build
every variation. See fuchsia/scripts/generate_gn.py for more details.
fuchsia/scripts: Utilities for building the gn and config files.
fuchsia/config/...: Pregenerated FFmpeg config options for each profile
and architecture.
fuchsia/patches/README: Details of Fuchsia-specific changes that haven't
yet made it upstream.
Help w/ Common Tasks:
=====================
-- Submitting changes to Fuchsia's FFmpeg Git repository.
The goal of Fuchsia's FFmpeg repository is to just be a mirror of the upstream
Git repository. This means every change made must be upstreamed. If you make
a change, please add an entry to fuchsia/patches/README with a link to the
tracking issue and code review for your change.
-- Upstreaming a patch.
<checkout copy of upstream repo>
git checkout <hash of last Fuchsia FFmpeg, see tag above> -b my_patch
git apply <patch. pulled from code review or cherry-picked from this repo>
git rebase origin/master
< Follow FFmpeg guide: http://ffmpeg.org/developer.html#Submitting-patches-1 >
Once your change has been upstreamed, please update the fuchsia/patches/README
file with the status. The next time an upstream merge is done, the committer
will clear out all the patches which have been upstreamed.
-- Cherry-picking a patch from upstream.
# Tell our repo about the upstream one.
git remote add upstream git://source.ffmpeg.org/ffmpeg.git
git fetch upstream
# Create a new branch based off of master for committing our patch.
git checkout origin/master -b my_new_branch
# Pull the patch out of upstream.
git cherry-pick -x <hash of commit in upstream>
<Follow rest of "Submitting changes to Fuchsia's FFmpeg Git repository.">
Performing An Upstream Merge
============================
# Update upstream/master to the desired upstream commit
TODO(dalesat): details
# Create a new branch based off of master.
git checkout origin/master -b my_new_branch
# Rebase the Fuchsia changes on top of upstream/master in my_new_branch
TODO(dalesat): details
# Build the ffmpeg for all profiles and architectures
./fuchsia/scripts/build_ffmpeg.py x64
./fuchsia/scripts/build_ffmpeg.py arm64
# Update Fuchsia stuff based on the results of the builds
./fuchsia/scripts/copy_config.sh
./fuchsia/scripts/generate_gn.py
./fuchsia/scripts/remove_unneeded_files.sh
# Use 'git add' to add new files as necessary (not the build.* dirs)
# Commit changes
# Test for regressions
# Submit