aboutsummaryrefslogtreecommitdiffstats
path: root/doc/bcd.pod
blob: f907fd2463ffe92294e271571386ad43e31cbe27 (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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
=head1 NAME

bcd tools - A simple program to generate Mandriva's ISO

=head1 SYNOPSIS

bcd configuration.xml [options]

=cut

=head1 OPTIONS

=over 8

=item B<First arg must be:>

 The XML configuration file

=item B<Second arg must be:>

 stagex: update the stage1/stage2 in builddir
 isolinux: update the isolinux in builddir
 clean: clean the builddir and isodir
 media: create the list of wanted packages, create all media in builddir,
        link/copy packages in builddir/media, create the media.cfg,
	and generate the hdtlist/synthesis
 gendistrib: create the hdlists/synthesis in builddir (depends on the based_on tag)
 rpmcheck: check the hdlist in the buildir
 list: list all media and list of input/exclude (from the xml conf file)
 mediarepo: list all medias availables in the repositery
 checkrepo: rpmcheck main hdlists in the repositery
 all: run all stage in order to get an ISO
 md5: create MD5 sum of the ISO
 resign: resign all rpms with a password and a gpg file
 clean: clean previous urpmq log file
 doble: check doble rpm in the media build_dir
 kernel: compare kernel and keep the latest one
 nodoble: don't check doble rpm in the media build_dir
 html: generate a log report web page
 info: parse the configuration file (usefull to check the XML syntax)
 iso: create the final ISO from the builddir
 verbose: be more verbose

=item B<extra arg:>

 noiso: don't build the iso (md5, isohybrid) in case of 'all' process
 copy: copy rpm instead of link them from the repositery

=back

=head1 EXAMPLES

the folowing example will do all step to create an ISO:

 bcd mdv-20091.xml all

the following example will create the build dir without creating ISO:
 bcd.pl mdv-20091.xml all noiso

same as above but copy packages instead of link them from the repositery:
 bcd.pl mdv-20091.xml all noiso copy

the following will update the isolinux in the build directory:
 bcd.pl mdv-20091.xml isolinux

to check the main hdlist in the repositery with rpmcheck
 bcd.pl mdv-20091.xml checkrepo

clean the builddir and isodir
 bcd.pl mdv-20091.xml clean

=cut

=head1 COPYRIGHT

Copyright (C) 2009-2011 Mandriva <aginies_@_mandriva.com>

=cut

=head1 DESCRIPTION

BCD is used to create Mandriva ISO.
features are:
- configuration file is in XML format
- use of genhdlist2 with file-deps
- support the add of an isolinux entry
- change the theme on all.rdz files
- just need an input and an exclude file for package list
- write media.cfg
- support of custom rpmsrate of compssusers.pl
- support of custom advertising
- support of custom stage2
- extra filter to remove doble packages (keep latest version)
- all sub-media supported (updates, testing...)
- create the iso HEADER
- use of urpmq to calculate deps/conflicts/suggests
- support of no-suggests option per media
- support extra external media with hdlists
- create an md5 file
- create a product.id file
- create a VERSION file
- speed up the process using previous urpmq --requires-recursive query

=cut

=head1 USER conf

Your user must have some sudo root right to be able to use chroot, urpmi,
rm, mount umount tools. IE: for user plop in /etc/sudoers file

 plop ALL=(root) NOPASSWD:/bin/mount, /bin/umount, \
	/usr/sbin/chroot, \
	/usr/sbin/urpmi, \
	/usr/sbin/urpmi.addmedia, \
	/usr/sbin/urpmi.removemedia, \
	/bin/rm

Moreover to speed up the process, each urpmq --requires-recursive queries
will be stored in /var/lib/bcd/ directory, so you should add an access to
this directory for the user you use.

 chown plop.users /var/lib/bcd/

=cut

=head1 LISTS

input list:
list of rpm needed on the CD. Those list should contains the name
or the provides of a package. You may also use a CAT_XXX from the
rpmsrate file, with the wheigth parameter.

 ie: of lists/input_main
 INSTALL 1
 CAT_X 1
 CAT_GNOME 1
 CAT_AUDIO 1
 aumix
 task-lxde

exclude list:
list of unwanted packages on the CD. Be carreful to do not exclude mandatory packages
or you CD will be unusable. Rpmcheck will report any bug in hdlists at the end of 
the 'media' step process. Packages listed in exclude list will be removed from the 
DVD at the end of the build process.

no-filter:
list of RPM you want to do not compare and the keep the latest one.
Usefull if you want to keep more than one version of a package.

=cut

=head1 ISSUE

 - if you want to build ISO for x86_64 you must used an x86_64 system (due to urpmi)
 - if hdlist/synthesis are corrupted in your repositery, you can't build ISO

=cut