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
|
Building from source
--------------------
Install “git-buildpackage” and “devscripts” then run the following:
debcheckout --git-track '*' util-linux
cd util-linux
git branch -l | grep debian
git checkout master
gbp buildpackage
We recommend you use pbuilder to make sure you build in a clean environment:
gbp buildpackage --git-pbuilder
Patch handling
--------------
The official form of modifications to the upstream source are quilt patches in
debian/patches/, like most Debian packages do. You are welcome to use quilt to
add or modify patches, but you might prefer using a git commit based approach.
gbp pq provides that by synthesizing a "patch-queue/<branch>" local branch
which represents each quilt patch as git commit. You create this with
gbp pq import --force
Then you are in the patch-queue branch and can git log, commit, cherry-pick
upstream commits, rebase, etc. there. After you are done, run
gbp pq export
which will put you back into the debian branch and update debian/patches/
(including series). You need to git add etc. new patches, add a changelog
and other packaging changes, and then debcommit as usual.
Rebasing patches to a new upstream version
------------------------------------------
gbp pq's "rebase" command does not work very conveniently as it fails on merge
conflicts. First, ensure you are in the debian branch:
git checkout master # in case you aren't already on it
Fetch new git history from upstream:
git remote add kzak git://git.kernel.org/pub/scm/utils/util-linux/util-linux.git
git fetch kzak [upstream-version-tag]
Now, to import a new upstream release into the existing branch,
ie. when updating from v2.24 to v2.24.2,
do:
gbp pq import --force
gbp pq switch # switch back to debian branch from patch-queue branch
gbp import-orig --upstream-vcs-tag=v2.24.2 ../tarballs/util-linux-v2.24.2.tar.xz
gbp pq switch # switch to patch-queue branch
git rebase master
gbp pq export
Note that our debian/gbp.conf disables patch numbers.
Also, don't forget to commit your newly generated patches!
git add debian/patches
git commit -v
Cherry-picking upstream patches
-------------------------------
You can add the util-linux upstream branch as an additional remote to the Debian
packaging branch. Call it "kzak" or similar to avoid confusing it
with the already existing "upstream" branch from gbp buildpackage:
git remote add kzak git://git.kernel.org/pub/scm/utils/util-linux/util-linux.git
git fetch kzak -n
Now you can look at the upstream log and cherry-pick patches into the
patch-queue branch:
gbp pq import --force
git log kzak/master
git cherry-pick 123DEADBEEF
Finally, export and commit your newly generated debian/patches changes:
gbp pq export
git add debian/patches
git commit -v
Modifying packaging files
-------------------------------
When making changes to debian/ general "git-buildpackage conventions" apply.
Follow usual git conventions for commit message but also see "man gbp-dch"
META TAGS section.
Finally once you're done update debian/changelog using "gbp dch --auto"
and commit it.
|