]> git.ipfire.org Git - people/ms/ipfire-3.x.git/blob - make.sh
New package: aiccu.
[people/ms/ipfire-3.x.git] / make.sh
1 #!/bin/bash
2 ###############################################################################
3 # #
4 # IPFire.org - A linux based firewall #
5 # Copyright (C) 2007, 2008, 2009 Michael Tremer & Christian Schmidt #
6 # #
7 # This program is free software: you can redistribute it and/or modify #
8 # it under the terms of the GNU General Public License as published by #
9 # the Free Software Foundation, either version 3 of the License, or #
10 # (at your option) any later version. #
11 # #
12 # This program is distributed in the hope that it will be useful, #
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of #
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
15 # GNU General Public License for more details. #
16 # #
17 # You should have received a copy of the GNU General Public License #
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. #
19 # #
20 ###############################################################################
21 #
22
23 NAME="IPFire" # Software name
24 SNAME="ipfire" # Short name
25 VERSION="3.0-prealpha2" # Version number
26 TOOLCHAINVERSION="${VERSION}-13" # Toolchain
27 SLOGAN="Gluttony" # Software slogan
28
29 # Include funtions
30 . tools/make-include
31
32
33 ################################################################################
34 # This builds the entire stage "toolchain" #
35 ################################################################################
36 toolchain_build() {
37
38 ORG_PATH=$PATH
39 export PATH=${TOOLS_DIR}/usr/bin:${TOOLS_DIR}/usr/sbin:${TOOLS_DIR}/bin:${TOOLS_DIR}/sbin:$PATH
40 STAGE_ORDER=01
41 STAGE=toolchain
42
43 LOGFILE="$BASEDIR/log_${TARGET}/_build.${STAGE_ORDER}-toolchain.log"
44 export LOGFILE
45
46 build_spy stage ${STAGE}
47
48 # We can't skip packages in toolchain stage
49 SAVE_SKIP_PACKAGE_LIST=$SKIP_PACKAGE_LIST
50 SKIP_PACKAGE_LIST=
51
52 icecc_disable
53
54 toolchain_make stage1
55 toolchain_make ccache PASS=1
56 toolchain_make binutils PASS=1
57 toolchain_make gcc PASS=1
58 toolchain_make linux-headers
59 toolchain_make glibc
60 toolchain_make adjust-toolchain
61 toolchain_make test-toolchain PASS=1
62 toolchain_make zlib
63 toolchain_make gcc PASS=2
64 toolchain_make binutils PASS=2
65 toolchain_make test-toolchain PASS=2
66 toolchain_make ncurses
67 toolchain_make attr
68 toolchain_make acl
69 toolchain_make bash
70 toolchain_make bzip2
71 toolchain_make coreutils
72 toolchain_make cpio
73 toolchain_make diffutils
74 toolchain_make e2fsprogs
75 toolchain_make icecc
76 icecc_enable
77 icecc_use toolchain # Use the fresh gcc
78 toolchain_make ccache PASS=2
79 toolchain_make file
80 toolchain_make findutils
81 toolchain_make gawk
82 toolchain_make gettext
83 toolchain_make grep
84 toolchain_make gzip
85 toolchain_make m4
86 toolchain_make make
87 toolchain_make patch
88 toolchain_make pax-utils
89 toolchain_make perl
90 toolchain_make sed
91 toolchain_make tar
92 toolchain_make texinfo
93 toolchain_make flex
94 toolchain_make bc
95 toolchain_make xz
96 toolchain_make autoconf
97 toolchain_make automake
98 toolchain_make strip
99
100 export PATH=$ORG_PATH SKIP_PACKAGE_LIST=$SAVE_SKIP_PACKAGE_LIST
101 unset SAVE_SKIP_PACKAGE_LIST
102 }
103
104 ################################################################################
105 # This builds the entire stage "base" #
106 ################################################################################
107 base_build() {
108
109 PATH=${TOOLS_DIR}/usr/bin:/bin:/usr/bin:/sbin:/usr/sbin:$TOOLS_DIR/bin
110 STAGE_ORDER=02
111 STAGE=base
112
113 LOGFILE="$BASEDIR/log_${TARGET}/_build.${STAGE_ORDER}-base.log"
114 export LOGFILE
115
116 build_spy stage ${STAGE}
117
118 # Start distributed compiling with toolchain
119 iceccd_start
120 icecc_use toolchain
121
122 ipfire_make stage2
123 ipfire_make scripts
124 ipfire_make system-release
125 ipfire_make linux-headers
126 ipfire_make man-pages
127 ipfire_make glibc
128 ipfire_make adjust-toolchain
129 ipfire_make test-toolchain
130 ipfire_make zlib
131 ipfire_make binutils
132 ipfire_make gcc
133
134 # Change to self-built gcc
135 icecc_use base
136
137 ipfire_make make
138 ipfire_make libtool
139 ipfire_make gettext
140 ipfire_make pkg-config
141 ipfire_make berkeley
142 ipfire_make sed
143 ipfire_make iana-etc
144 ipfire_make m4
145 ipfire_make bison
146 ipfire_make flex
147 ipfire_make ncurses
148 ipfire_make shadow
149 ipfire_make cracklib
150 ipfire_make pam
151 ipfire_make attr
152 ipfire_make acl
153 ipfire_make libcap2
154 ipfire_make util-linux-ng
155 ipfire_make e2fsprogs
156 ipfire_make coreutils
157 ipfire_make procps
158 ipfire_make perl
159 ipfire_make readline
160 ipfire_make libidn
161 ipfire_make bzip2
162 ipfire_make pcre
163 ipfire_make paxctl
164 ipfire_make autoconf
165 ipfire_make automake
166 ipfire_make bash
167 ipfire_make cpio
168 ipfire_make diffutils
169 ipfire_make eventlog
170 ipfire_make file
171 ipfire_make findutils
172 ipfire_make gmp
173 ipfire_make grub
174 ipfire_make gawk
175 ipfire_make glib2
176 ipfire_make grep
177 ipfire_make groff
178 ipfire_make gzip
179 ipfire_make iputils
180 ipfire_make iproute2
181 ipfire_make kbd
182 ipfire_make less
183 ipfire_make man-db
184 ipfire_make module-init-tools
185 ipfire_make mpfr
186 ipfire_make patch
187 ipfire_make pax-utils
188 ipfire_make psmisc
189 ipfire_make syslog-ng
190 ipfire_make sysvinit
191 ipfire_make tar
192 ipfire_make texinfo
193 ipfire_make vim
194 }
195
196 ################################################################################
197 # This builds the entire stage "ipfire" #
198 ################################################################################
199 ipfire_build() {
200 PATH=${TOOLS_DIR}/usr/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/${MACHINE_REAL}-linux/bin
201 STAGE_ORDER=03
202 STAGE=ipfire
203
204 LOGFILE="$BASEDIR/log_${TARGET}/_build.${STAGE_ORDER}-ipfire.log"
205 export LOGFILE
206
207 build_spy stage ${STAGE}
208
209 ### Building the configuration dirs and files
210 #
211 ipfire_make stage3
212 ipfire_make xz
213 ipfire_make unzip
214
215 ipfire_make linux
216
217 ### Building some general stuff
218 # STAGE 1
219 ipfire_make libdaemon
220 ipfire_make expat
221 ipfire_make dbus
222 ipfire_make dbus-glib
223 ipfire_make upstart
224 ipfire_make initscripts
225 ipfire_make openssl
226 ipfire_make perl-xml-parser
227 ipfire_make intltool
228 ipfire_make python
229 ipfire_make python-cracklib
230 ipfire_make python-dbus
231 ipfire_make python-setuptools
232 ipfire_make python-urlgrabber
233 ipfire_make python-IPy
234 ipfire_make libxml2
235 ipfire_make libxslt
236 ipfire_make popt
237 ipfire_make libusb
238 ipfire_make libusb-compat # Can be removed if usbutils supports libusb-1.0
239 ipfire_make bc
240 ipfire_make boost
241 ipfire_make lua
242
243 ### Building some network stuff
244 #
245 ipfire_make libpcap
246 ipfire_make linux-atm
247 ipfire_make ppp
248 ipfire_make pptp
249 ipfire_make dhcp
250 ipfire_make iptables
251 ipfire_make libnfnetlink
252 ipfire_make libnetfilter_queue
253 ipfire_make libnetfilter_conntrack
254 ipfire_make libnetfilter_log
255 ipfire_make python-netfilter_conntrack
256 ipfire_make l7-protocols
257 ipfire_make bridge-utils
258 ipfire_make vlan
259 ipfire_make bind
260 ipfire_make jwhois
261 ipfire_make avahi
262 ipfire_make libssh2
263 ipfire_make libdnet
264 ipfire_make rstp
265 ipfire_make ebtables
266 ipfire_make openlldp
267 ipfire_make radvd
268 ipfire_make aiccu
269
270 ### Building some general stuff
271 # STAGE 2
272 ipfire_make pth
273 ipfire_make libassuan
274 ipfire_make libgpg-error
275 ipfire_make libgcrypt
276 ipfire_make gnutls
277 ipfire_make libksba
278 ipfire_make slang
279 ipfire_make newt
280 ipfire_make cyrus-sasl
281 ipfire_make openldap
282 ipfire_make pam_ldap
283 ipfire_make nss_ldap
284 ipfire_make ldapvi
285 ipfire_make sqlite
286 ipfire_make python-sqlite2
287 ipfire_make curl
288 ipfire_make pinentry
289 ipfire_make gnupg2
290 ipfire_make sudo
291 ipfire_make libjpeg
292 ipfire_make libpng
293 ipfire_make libtiff
294 ipfire_make libart
295 ipfire_make freetype
296 ipfire_make fontconfig
297 ipfire_make pixman
298 ipfire_make cairo
299 ipfire_make pango
300 ipfire_make lzo
301 ipfire_make lsof
302 ipfire_make br2684ctl
303 ipfire_make etherwake
304 ipfire_make beep
305 ipfire_make libuser
306 ipfire_make passwd
307 ipfire_make directfb
308 ipfire_make pdns
309 ipfire_make pdns-recursor
310 ipfire_make libevent
311 ipfire_make libnfsidmap
312 ipfire_make libgssglue
313 ipfire_make librpcsecgss
314 ipfire_make gperf
315
316 ### Building vpn stuff
317 #
318 ipfire_make strongswan
319 ipfire_make openvpn
320
321 ### Building filesystem stuff
322 #
323 ipfire_make btrfs-progs
324 ipfire_make reiserfsprogs
325 ipfire_make libaal
326 ipfire_make reiser4progs
327 ipfire_make xfsprogs
328 ipfire_make sysfsutils
329 ipfire_make squashfs-tools
330 ipfire_make dosfstools
331 ipfire_make lvm2
332 ipfire_make mdadm
333 ipfire_make dmraid
334 ipfire_make cryptsetup-luks
335 ipfire_make python-cryptsetup
336 ipfire_make fuse
337
338 ### Building hardware utils
339 #
340 ipfire_make pciutils
341 ipfire_make usbutils
342 ipfire_make hdparm
343 ipfire_make smartmontools
344 ipfire_make lm-sensors
345 ipfire_make parted
346 ipfire_make hal
347 ipfire_make hal-info
348 ipfire_make udev
349
350 ### Building some important tools
351 #
352 ipfire_make ulogd2
353 ipfire_make which
354 ipfire_make screen
355 ipfire_make rrdtool
356 ipfire_make ntp
357 ipfire_make openssh
358 ipfire_make ez-ipupdate
359 ipfire_make noip
360 ipfire_make lighttpd
361 ipfire_make webinterface
362 ipfire_make logrotate
363 #ipfire_make logwatch
364 ipfire_make dvdrtools
365 ipfire_make python-parted
366 ipfire_make python-pyblock
367 ipfire_make libbdevid
368 ipfire_make memtest86+
369 ipfire_make quagga
370 #ipfire_make mISDN
371 ipfire_make wireless-tools
372
373 ipfire_make python-werkzeug
374 ipfire_make python-flup
375 ipfire_make python-tornado
376 ipfire_make pyfire
377 ipfire_make network
378 ipfire_make firewall
379 ipfire_make pakfire
380 }
381
382 ################################################################################
383 # This builds the entire stage "misc" #
384 ################################################################################
385 misc_build() {
386
387 PATH=${TOOLS_DIR}/usr/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/${MACHINE_REAL}-linux/bin
388 STAGE_ORDER=04
389 STAGE=misc
390
391 LOGFILE="$BASEDIR/log_${TARGET}/_build.${STAGE_ORDER}-misc.log"
392 export LOGFILE
393
394 build_spy stage ${STAGE}
395
396 ipfire_make stage4
397
398 #ipfire_make miniupnpd
399
400 ### Console tools
401 #
402 ipfire_make mc
403 ipfire_make traceroute
404 ipfire_make nmap
405 #ipfire_make rsync
406 ipfire_make tcpdump
407 ipfire_make htop
408 ipfire_make nano
409 ipfire_make joe
410
411 ### Servers
412 #
413 ipfire_make squid
414 ipfire_make samba
415
416 ### Assembler
417 #
418 ipfire_make nasm
419 ipfire_make syslinux
420
421 ipfire_make mkinitramfs
422 ipfire_make splashy
423
424 ipfire_make vsftpd
425
426 ## NTFS
427 #ipfire_make ntfs-3g
428 #
429 ## Net tools
430 ipfire_make net-snmp
431 ipfire_make bwm-ng
432
433 ### These will become addons as usual but will be integrated later
434 #
435 #ipfire_make snort
436 #ipfire_make oinkmaster
437 ipfire_make ghostscript
438 ipfire_make cups
439 ipfire_make sane
440 ipfire_make hplip
441 #ipfire_make postfix
442 #ipfire_make fetchmail
443 #ipfire_make clamav
444 #ipfire_make alsa
445 ipfire_make portmap
446 ipfire_make nfs-utils
447 ipfire_make freeradius
448
449 ### Debugging
450 #
451 ipfire_make paxtest
452 ipfire_make gdb
453 ipfire_make strace
454 ipfire_make pychecker
455
456 ### Virtualization
457 #
458 ipfire_make xen
459 ipfire_make qemu
460 ipfire_make libvirt
461 }
462
463 ################################################################################
464 # This builds the entire stage "installer" #
465 ################################################################################
466 installer_build() {
467
468 PATH=${TOOLS_DIR}/usr/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/${MACHINE_REAL}-linux/bin
469 STAGE_ORDER=05
470 STAGE=installer
471
472 LOGFILE="$BASEDIR/log_${TARGET}/_build.${STAGE_ORDER}-installer.log"
473 export LOGFILE
474
475 build_spy stage ${STAGE}
476
477 ipfire_make stage5
478 ipfire_make pomona
479 }
480
481 ################################################################################
482 # This builds the entire stage "packages" #
483 ################################################################################
484 packages_build() {
485
486 PATH=${TOOLS_DIR}/usr/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/${MACHINE_REAL}-linux/bin
487 STAGE_ORDER=06
488 STAGE=packages
489
490 LOGFILE="$BASEDIR/log_${TARGET}/_build.${STAGE_ORDER}-packages.log"
491 export LOGFILE
492
493 build_spy stage ${STAGE}
494
495 # Generate ChangeLog
496 git_log
497
498 # Generate packages list
499 echo -n "Generating packages list"
500 pkg_list_packages > $BASEDIR/doc/packages-list.txt
501 beautify message DONE
502
503 if [ ${EMB} -eq 0 ]; then
504 ipfire_make images-core
505 ipfire_make images-info
506 ipfire_make images-initramfs
507 ipfire_make images-overlays
508 ipfire_make pxe
509 ipfire_make cdrom
510
511 if check_loop; then
512 : #ipfire_make usb-key
513 else
514 echo -n "Can't build usb-key images on this machine"
515 beautify message WARN
516 fi
517 mv $LFS/$IMAGES_DIR/{*.iso,*.tar.gz,*.img.gz} $BASEDIR >>$LOGFILE 2>&1
518 else
519 if check_loop; then
520 # We put here the code that is done when
521 # we do an embedded build
522 :
523 fi
524 fi
525
526 # Cleanup
527 stdumount
528 rm -rf $LFS/tmp/*
529
530 cd $PWD
531 }
532
533 # See what we're supposed to do
534 . $BASEDIR/tools/make-interactive