summaryrefslogtreecommitdiffstats
diff options
authorMcgrof <anonymous.contributor@example.org>2014-11-17 21:00:43 +0000
committerKonstantin Ryabitsev <konstantin@linuxfoundation.org>2024-10-04 15:47:33 -0400
commit540cee4ecb745849cc18a2cf52dc1c1b48488530 (patch)
treea47887fff843a61dcae7c3577ae47f26b212e384
parente3a479687d77bbc83c0028db7ef059cecee7e109 (diff)
downloadbackports-540cee4ecb745849cc18a2cf52dc1c1b48488530.tar.gz
Update Documentation/backports/hacking
-rw-r--r--wiki/Documentation_backports_hacking.mediawiki47
1 files changed, 44 insertions, 3 deletions
diff --git a/wiki/Documentation_backports_hacking.mediawiki b/wiki/Documentation_backports_hacking.mediawiki
index 0749476..faa307e 100644
--- a/wiki/Documentation_backports_hacking.mediawiki
+++ b/wiki/Documentation_backports_hacking.mediawiki
@@ -6,17 +6,58 @@ title: Documentation/backports/hacking
The project aims to optimize the backporting process by not only providing backported drivers but by also aiming to [http://www.do-not-panic.com/2012/08/automatically-backporting-linux-kernel.html automatically backport the Linux kernel] by [http://www.do-not-panic.com/2012/08/optimizing-backporting-collateral.html optimizing backporting collateral evolutions].
+= Backports development flow =
+
+The [https://git.kernel.org/cgit/linux/kernel/git/backports/backports.git backports.git] master
+development branch always tracks linux-next, allowing it to
+track all the development trees. This ensures that at the end
+of each merge window, the state of the backports will be
+very close to the state of the first release candidate. At this
+point, the backports project creates a further branch that tracks
+the progress of the new release over the release candidate
+evaluation period, to the major release, and on to its lifetime as
+a stable kernel.
+
+The backports project thus makes three kinds
+of backports releases possible: those derived from linux-next, those
+derived from the most recent release candidate if any, and
+those derived from recent stable kernels.
+
+= Backports git tree tags and branches =
+
+The project uses two types of git tags:
+
+* daily tags following linux-next
+* stable tags following either Linus' tree for rc releases or Greg's stable tree for stable extra version releases
+
+The project uses a master branch and a series of stable branches, a stable branch to track each stable release of the kernel. The master branch always tags linux-next, for example the backports tag backports-20141114 supports using linux-next tag next-20141114. Once Linus makes a release candidate of the kernel a respective ''stable backports branch'' is created based on the version of Linux Linus released, this backports branch will be based on a recent backports tag which was tracking linux-next. Future release candidates of the same version of Linux as well as stable release of Linux under the same version will be backported using the respective ''backports stable branch'' created.
+
+If any of this is fuzzy please refer to the [https://github.com/mcgrof/paper-backports/raw/master/paper.pdf Increasing Automation in the Backporting of Linux Drivers Using Coccinelle] paper, in particular the sections:
+
+* 1A - A. The Linux kernel development model
+* 1B - A brief history of the Linux kernel backports project
+
= Git trees you will need =
-backports backports a few subsystems down to older kernels. To be able to synchronize backporting the latest and greatest the [https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git linux-next.git] tree is used as its main source for kernel updates.
+The project backports a few subsystems down to older kernels. To be able to synchronize backporting the latest and greatest the [https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git linux-next.git] tree is used as its main source for kernel updates.
backports brings a general kernel compatibility part containing some backported c functions and header files in addition to patches for code in linux-next to make it work on older kernel versions and with the general kernel compatibility part.
-This is now in one repository [https://git.kernel.org/cgit/linux/kernel/git/backports/backports.git backports.git] and not spitted over two any more.
+You will need first the [https://git.kernel.org/cgit/linux/kernel/git/backports/backports.git backports.git] tree. Once cloned you can run:
+
+ ./devel/backports-update-manager
+
+That will get you all other trees and sources required for development, which are:
+
+* linux-next - Stephen Rothwell's tree which tracks all development trees daily
+* linux - Linus' tree
+* linux-stable - Greg's stable tree for stable extra version releases
+
+This will use git clone --reference to minimize disk usage.
You can generate backports based on different trees depending on your needs. We are supporting build based on [https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/ linux-next.git], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/ linux.git] and [https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/ linux-stable.git]. You can also generate builds based on your own tree, but then you probably have to patch backports yourself to add support for that.
= Tool prerequests =
-git, python patch and coccinelle are needed to generate a backports release.
+git, python patch and coccinelle are needed to generate a backports release. The tools will complain if you do not have any of the required dependencies.
= Generate new release =