Additional clarifications to building test packages
[devwiki.git] / release / test.mdwn
1 [[!meta title="Preparing Test Builds"]]
2
3 This page describes performing test builds to run on Painless
4 Security's test infrastructure.
5
6 Log into moonbuild (10.1.10.11) and check out a tree.  Below we check out a writable tree, because you'll probably end up making some changes:
7
8     ssh -A <username>@10.1.10.11
9     git clone <username>@moonshot.suchdamage.org:/srv/git/moonshot.git
10
11 this will leave you on the master branch of the [[Moonshot repository|branches]].
12 However, to build Debian test packages, you want to be  on the debian branch. So:
13
14     cd moonshot
15     git checkout debian
16     git submodule update --init
17
18 Now, merge in the changes you want to test.
19 Let's say that you're updating moonshotUI and that your changes are already on master.
20
21     cd ui
22     git pull origin master
23
24 Now we'll need to update the debian version number so we can do a fresh build:
25
26     dch -i
27
28 This will pull up an editor.  Describe the change.  You will be modifying debian/changelog.  We will not commit this file because we're just generating test packages.
29
30 You probably want to run:
31
32     autoreconf -f -i
33
34 To regenerate configure scripts.
35
36 Change back to the root of your checkout of the master repository.
37
38 Now, we want to disable stripping and optimization for our builds:
39
40     export DEB_BUILD_OPTIONS="noopt nostrip"
41
42 Now would be a good time to remove the "debian_build" directory if it has contents from a previous build.
43
44 And run the builds
45
46     ./debian-builder -s -c -s wheezy-i386 -s --arch=i386 -s -A <directories>
47 The "-s" option gets repeated a lot because it passes the following option to sbuild, the Debian package build infrastructure.  That will run an i386 (32-bit) build of the software using the wheezy-i386 (Debian 7.0) chroot (filesystem image).  For directories include the directory of the software you're wishing to build.
48
49 The build summary will have a status of "successful" if the build is successful.  Most failures result in a status of "attempted".
50
51 The output packages will be placed in the debian_build directory.
52
53 Copy these to any test machines you like.  You might like a loop something like
54
55     for ip in 21 22 23 90; do
56         rsync -e ssh -P -a debian_build root@10.1.10.$ip:/tmp
57         done
58
59 That will copy the debian_build directory to the listed machines.  Log into these machines and run
60
61     cd /tmp/debian_build
62     dpkg -i packages_you_want_to_install
63
64 If dependencies are not installed try running "aptitude install" to fix.  Make sure it doesn't "fix" things by removing the package you just installed.
65 # Trying aAgain when Tests fail
66
67 You can run
68
69     git reset --hard
70
71 In the submodule checkout to throw away your changes if you need to re-merge in some new fixes.  After this, run git merge again in the submodule and proceed from that point in the instructions.