blob: cfedb4b1bbeddf8cbdfce5b33b13cc46f5be6f9c (
plain)
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
[[!meta title="Keyringer: development guidelines and workflow"]]
Index
-----
[[!toc levels=4]]
Development environment
-----------------------
The following steps needs to be run just once for each arch and distro version.
### Create the `debian/` structure
if [ ! -d "debian" ]; then
dh_make -p keyringer_0.1 --createorig
fi
### Setup a sid pbuilder chroot
DIST=sid git-pbuilder create
### Setup a sid cowbuilder chroot
DIST=sid sudo cowbuilder --create
Environment maintenance
-----------------------
These steps should be run once in a while to ensure we have an up to date packaging environment.
### Pbuilder
DIST=sid git-pbuilder update
### Cowbuilder
DIST=sid sudo cowbuilder --update
Release workflow
----------------
Go to master branch
git checkout master
Prepare the source code:
$EDITOR keyringer # and update KEYRINGER_VERSION
$EDITOR ChangeLog
make build_man
Commit and tag a release:
VERSION="`./keyringer | head -n 1 | cut -d ' ' -f 2`"
git commit -a -m "Keyringer $VERSION"
git tag -s $VERSION -m "Keyringer $VERSION"
Create a release file:
make tarball
Sign the release ([see backupninja development guidelines](https://labs.riseup.net/code/projects/backupninja/wiki/Release)):
cd ../tarballs
gpg --armor --detach-sign keyringer-$VERSION.tar.bz2
Upload the release:
scp keyringer-$VERSION.tar.bz2* keyringer:/var/sites/keyringer/releases/
cd -
Update the debian branch:
git checkout debian
git-import-orig --upstream-vcs-tag=$VERSION ../tarballs/keyringer-$VERSION.tar.bz2
dch -e # fine tune the changelog prepared by git-dch
git commit -a -m "Updating debian/changelog"
Push everything:
git push --tags
Build the package from the debian Git branch:
git-buildpackage
Run lintian (or [add it to your pbuilder hooks](http://askubuntu.com/questions/140697/how-do-i-run-lintian-from-pbuilder-dist)):
lintian --info --display-info --pedantic --color auto \
../build-area/keyringer_$VERSION*.changes
Create a signed tag in the debian branch:
git-buildpackage --git-tag-only --git-sign-tags
Notes:
* `git-import-orig` takes care of running `pristine-tar commit`, of merging of the tag and orig tarball into the upstream branch, and then it merges the result into the debian branch. With the above configuration, it also runs git-dch to do the bulk of the work in `debian/changelog`.
* To build a development package, checkout the debian branch, merge master, run `git-dch --auto --snapshot` and build.
Adding or changing a subcommand
-------------------------------
When adding a new subcommand or changing subcommand behavior, ensure:
* Documentation is updated.
* Manpage is updated.
* Shell completions are updated.
Test environment
----------------
Setup:
keyringer test init ~/code/tests/keyringer
Teardown:
rm -rf ~/code/tests/keyringer
rm ~/.keyringer/test
sed -i -e '/^test=/d' ~/.keyringer/config
Translation
-----------
Run just once:
cd share/man
po4a-gettextize -f text -m keyringer.1.mdwn -p keyringer.pot
References
----------
* [Using Git for Debian Packaging](http://www.eyrie.org/~eagle/notes/debian/git.html).
* [Building packages from the Git repository](http://honk.sigxcpu.org/projects/git-buildpackage/manual-html/gbp.building.html).
* [Cowbuilder](https://wiki.debian.org/cowbuilder).
* [git-pbuilder](https://wiki.debian.org/git-pbuilder).
* [PackagingWithGit - Debian Wiki](https://wiki.debian.org/PackagingWithGit).
* [Generating pristine tarballs from git repositories](http://joeyh.name/blog/entry/generating_pristine_tarballs_from_git_repositories/).
* [Debian Packaging](https://wiki.debian.org/Packaging).
* [Debian Upstream Guide](https://wiki.debian.org/UpstreamGuide).
|