-
Notifications
You must be signed in to change notification settings - Fork 7
/
README
250 lines (160 loc) · 7.59 KB
/
README
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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
Vyatta VC4 ISO Build Procedures
This document describes how to build a Vyatta VC4 ISO image.
The most recent version of this document is the top-level README file of
the "islavista" branch of the "build-iso" source tree.
Prerequisites
The Vyatta ISO build uses the "live-helper" tool that is available
in several distributions. However, we recommend that build hosts
based on either Debian "lenny" or Ubuntu "hardy". The "build-iso"
source is maintained as a GIT super-module that references several
submodules that each build one or more self named Debian
packages. The submodule feature was added to GIT v1.5.2.
Getting Source
The Vyatta ISO builder consists of scripts and config files
maintained as a GIT super-module named, "build-iso" that
references several submodules within its "pkgs/" sub-directory.
Note that the super-module and submodules each have multiple
branches available. To build successfully, all modules must
have the same branch checked out.
To clone the super-module, if you haven't do so, install git:
apt-get install git-core
Then:
git clone https://git.vyatta.com/build-iso.git
This will create a tree in the directory ./build-iso .
(At this point, you might want to switch to reading
./build-iso/README, which is the most recent version
of the file which you are reading now:-)
Our git repositories have branches, the most stable of which
is the default git branch ("master"). If you are
interested in another branch (let's call it BRANCH), then:
cd build-iso
git checkout --track -b BRANCH origin/BRANCH
If you don't want to build any submodules and just want to build an
ISO with all pre-built packages, you can skip the following submodule
instructions and go to the next section "Configuration".
To register the submodules in the cloned repository config,
git submodule init
It's most efficient to selectively clone only the submodules
needing for review or modifcation. The ISO build downloads the
Vyatta pre-built, binary packages of any non-cloned sub-module. To
clone a specific sub-module,
git submodule update pkgs/SUBMODULE
This command clones the SUBMODULE repository in the "pkgs/SUBMODULE"
directory and checks out the master branch. If you wish to checkout a
different branch, use:
cd pkgs/SUBMODULE
git checkout --track -b BRANCHNAME origin/BRANCHNAME
To clone all sub-modules for full verification build,
git submodule update
Remember to create and checkout the same working branch for all
submodules.
Build Host Setup
To set up a build environment (e.g., system or VM), we recommend
installing Debian "lenny" (i.e. "testing") with either business-card
or net-install image. You can also use the Vyatta livecd ISO for a
build host. (If you do want to start from the Vyatta system, you will
have to unistall libsnmp15--which will uninstall most of the Vyatta
specific features.)
https://cdimage.debian.org/cdimage/daily-builds/daily/arch-latest/i386/iso-cd/debian-testing-i386-businesscard.iso
https://cdimage.debian.org/cdimage/daily-builds/daily/arch-latest/i386/iso-cd/debian-testing-i386-netinst.iso
https://packages.vyatta.com/iso/testing/*.iso
The respective installation prompts for distribution mirror. Any debian "lenny"
mirror will do. To include Vyatta's Debian miror, add this to /etc/apt/sources.list:
deb https://packages.vyatta.com/debian/ lenny main
deb https://packages.vyatta.com/debian-security/ lenny/updates main
You also need to add the Vyatta buildtools repository to sources.list,
deb https://packages.vyatta.com/vyatta-dev/ buildtools main
To install the Vyatta repository GPG key,
wget -O vyatta-pubkey.gpg https://packages.vyatta.com/vyatta-dev/vyatta-pubkey.gpg
sudo apt-key add vyatta-pubkey.gpg
To build an ISO with all pre-built binary, packages, you need to install
certain tools on the build host.
This script will setup the build environment for an ISO build:
setup-build-env
In order to build the individual vyatta packages, you need to install additional
debian packages. Note that each vyatta package build will check if the required
debian packages are installed. It will "complain" if they are not. In order to
save some iteration, run this script to download and install these packages:
setup-pkg-env
Configuration
The Vyatta ISO builder has GNU autotool configuration,
autoreconf -i
./configure --with-target-dist=lenny
To see all configure options,
./configure --help
Build ISO
To build an ISO:
PATH=/sbin:/usr/sbin:$PATH
sudo make
The end results is the following livecd,
livecd/binary.iso
Clean
The Vyatta ISO builder has these standard automake targets to
clean files generated:
make mostlyclean # during ISO build (excludes package built files)
make clean # during package builds along with ISO files
make distclean # by autoreconf and configure plus all of the above
For example, to clean the ISO build files,
make mostlyclean
Build submodules
When you do a "make", the build system will build the binary packages
for all cloned submodules and include them in the ISO. If you want to
work with specific submodules, you can use the commands listed below.
To build binary packages for cloned submodule(s),
tools/submod-mk { --all | SUBMODULE... }
To build binary and source packages for submodule(s),
tools/submod-mk --source { --all | SUBMODULE... }
To build signed binary and source packages for submodule(s),
tools/submod-mk --signed-source { --all | SUBMODULE... }
To clean files generated during submodule build,
tools/submod-clean SUBMODULE...
To clean files generated during all submodule builds,
tools/submod-clean
To also clean the submodule build stage(s),
tools/submod-clean -d [ SUBMODULE... ]
To clean the source tree of submodules to skip subsequent builds,
tools/submod-clean -g [ SUBMODULE... ]
This retains the local bare git repository for quicker updates.
Changes
After making, testing, and commiting your changes to your local
repos, publish them to the shared repos with,
git push suva.vyatta.com:/git/SUBMODULE.git
This will, of course, require an account on suva.vyatta.com, which
is only available to authorized vyatta developers.
Then update and publish the super-module index to include the
submodule changes,
cd ../..
git update-index pkgs/SUBMODULE
git commit -m 'update sub-module SUBMODULE'
git push suva.vyatta.com:/git/build-iso.git
Updates using git
Update the super-module.
git pull
git submodule init
To update all modules, you can use:
tools/submod-git pull
Or for the paranoid
tools/submod-git fetch
git whatchanged HEAD..origin/master
git merge
To see which checked-out submodules have upstream modifications,
git status # search for changes in pkgs/
Get the "from" and "to" commit ids (SHAs) with,
git diff pkgs/SUBMODULE
This will produce output something like,
diff --git a/pkgs/vyatta-cfg-quagga b/pkgs/vyatta-cfg-quagga
index 78124a9..fca1739 160000
--- a/pkgs/vyatta-cfg-quagga
+++ b/pkgs/vyatta-cfg-quagga
@@ -1 +1 @@
-Subproject commit 78124a9754efe0bda1d9c827c593c5e0635fec3c
+Subproject commit fca1739f1985c2ba8d6316b1882365f5e26245cd
To review what changed between these SHAs,
cd pkgs/SUBMODULE
git whatchanged FROM_SHA TO_SHA
To merge these submodule changes,
git merge
cd ../..
git submodule update
The "git status" for this submodule should now be clean. Iterate
through the other updated submodules, then rebuild the ISO.