-
Notifications
You must be signed in to change notification settings - Fork 0
/
README.chromium
107 lines (74 loc) · 4.23 KB
/
README.chromium
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
Name: ffmpeg
URL: http://ffmpeg.org/
License: LGPL 2.1
License File: LICENSE.md
Upstream Git: git://source.ffmpeg.org/ffmpeg.git
Last Upstream Merge: 24e7e0237b6eb95a649dc62bd70817a12c6c6ea6, Dec 1 2014
This file documents the layout of the Chromium copy of FFmpeg git, some common
tasks, how to produce the FFmpeg include directory, and how to create the
ffmpeg.gyp file and related configurations.
FFmpeg Git Layout:
==================
Chromium's copy of FFmpeg is a fork of the upstream git repository, see the tags
above for up-to-date cut information. All of the chromium specific bits, minus
the gyp files, are located under the chromium/ folder off the root.
ffmpeg.gyp: See the section on ffmpeg.gyp below.
ffmpeg_generated.gypi: Pregenerated gyp listing of files necessary to build
every platform. See chromium/scripts/generate_gyp.py for more details.
chromium/scripts: Utilities for building the gyp and config files.
chromium/config/...: Pregenerated FFmpeg config options for each platform
and architecture; e.g., ChromeOS: ARM-Neon, Linux: X64, etc.
chromium/patches/...: Chromium specific changes which haven't yet made it
upstream. See chromium/patches/README for more details on each patch.
Historically, the .patch files were staged on top of a source tarball
instead of the Git repository we have now. The .patch files are kept for
tracking purposes. The new system only requires that you add an entry to
the README file with a link to the tracking issue and code review.
Help w/ Common Tasks:
=====================
-- Submitting changes to Chromium's FFmpeg git repository.
The goal of Chromium's FFmpeg repository is to just be a mirror of the upstream
Git repository. Which means every change made must be upstreamed. If you make
a change, please add an entry to chromium/patches/README with a link to the
tracking issue and code review for your change.
1) See if you have access to gerrit:
ssh -p 29418 gerrit.chromium.org gerrit ls-projects
If you get permission denied, set up your gerrit access and SSH keys:
http://www.chromium.org/chromium-os/developer-guide/gerrit-guide/legacy
Install commit hooks to generate Change-Id fields in commits:
scp -p -P 29418 gerrit.chromium.org:hooks/commit-msg .git/hooks/
2) Create a branch and make a local, single commit. Gerrit differs from
Rietveld in that you must have a single commit, so use git commit --amend
if you need to make changes. Inspect that your commit contains a
Change-Id field, which is how gerrit coalesces separate patch sets into the
same code review.
3) Upload for review:
git push ssh://gerrit.chromium.org:29418/chromium/third_party/ffmpeg \
HEAD:refs/for/master
4) Commit via gerrit once approved.
5) If needed, submit a Chromium-side change to update DEPS.
-- Upstreaming a patch.
<checkout copy of upstream repo>
git checkout <hash of last Chromium 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 chromium/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 master -b my_new_branch
# Pull the patch out of upstream.
git cherry-pick <hash of commit in upstream>
<Follow rest of "Submitting changes to Chromium's FFmpeg git repository.">
Performing An Upstream Merge
============================
Currently this is an extremely tedious process that requires access to a Linux,
Mac, and Windows development machine and lot of blood, sweat, and tears.
The instructions are also prone to going stale, so in the interest collaboration
and sharing tips we've moved to a public document:
https://docs.google.com/a/chromium.org/document/d/14bqZ9NISsyEO3948wehhJ7wc9deTIz-yHUhF1MQp7Po/edit#