blob: d9d173d10380a64bb1ea20384659815be04ab62e (
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
|
Debian packaging effort!
========================
In the past, we used to be [heavy slackware users](https://simplepkg.sarava.org) when we just
had a few boxes to manage. Then we had to change our whole packaging paradigm when we switched
to Debian.
These notes are mainly references to the detailed Debian/Ubuntu documentations we're using in
the course of learning the intricacies of Debian packaging.
Grab this repository using
git clone --recursive git://git.sarava.org/debian.git
Configuration files
-------------------
All the commands in this guide assumes that you're using [these configuration
files](https://git.sarava.org/?p=rhatto/dotfiles/debian.git;a=summary).
Starting a new package
----------------------
We use the `packages/` folder from this repo to store sources:
mkdir package/$package
cd package/$package
Build environment creation
--------------------------
The following steps needs to be run just once for each arch and distro version.
### Setup cowbuilder chroots
This is the recommended method:
sudo mkdir /var/cache/pbuilder/sid-amd64
sudo -E cowbuilder --create
sudo mkdir /var/cache/pbuilder/wheezy-amd64
sudo -E DIST=wheezy cowbuilder --create
### Setup pbuilder chroots
If you want to setup directly using `pbuilder`:
git-pbuilder create
DIST=wheezy git-pbuilder
### Compatibility with git-buildpackage
This is a workaround while we don't find a cleaner way to fix
[this issue](http://ramblingfoo.blogspot.com.br/2012/10/howto-sudo-cowbuilder-git-buildpackage.html)
with `git-buildpackage` not getting `~/.pbuilderrc` from the local user:
( cd /var/cache/pbuilder/ && sudo ln -s sid-amd64/base.cow )
External repo integration
-------------------------
If your package storage lives elsewhere, make a symlink like this:
(
cd /var/cache/pbuilder/wheezy-amd64 && \
sudo rm -rf result && \
sudo ln -s /var/data/apps/distros/debian/packages/build-area/wheezy-amd64 result
)
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
DIST=wheezy git-pbuilder update --override-config
### Cowbuilder
DIST=sid sudo -E cowbuilder --update
DIST=wheezy sudo -E cowbuilder --update --override-config
Building
--------
DIST=wheezy sudo -E cowbuilder --build $package*.dsc
Signing
-------
To sign both the `.dsc` and the `.changes` files:
debsign $package*.changes
Uploading
---------
Simply run
dupload *changes
This assumes a `~/.dupload.conf` like the following:
package config;
$default_host = "myremote";
$cfg{'myremote'} = {
fqdn => "myremote.example.org",
login => "user",
method => "scpb",
incoming => "/var/reprepro/incoming/",
# The dinstall on ftp-master sends emails itself
#dinstall_runs => 1,
};
It's also important that:
1. The host remote port is correctly defined at your `~/.ssh/config`.
2. The user is in the `reprepro` group in the server.
|