summaryrefslogtreecommitdiffstats
path: root/doc/scripts/kdesvn-build/index.docbook
blob: e54dbb9bb243d5e3726e84b1372e03c4b142bde5 (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
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
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
<?xml version="1.0" ?>
<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
  <!ENTITY kappname "kdesvn-build">
  <!ENTITY package "kdesdk">
  <!ENTITY % addindex "IGNORE">
  <!ENTITY % English "INCLUDE"> <!-- Change language only here -->
  <!ENTITY svn "<application>Subversion</application>">
  <!ENTITY kdesvn-build "<application>kdesvn-build</application>">
]>

<book lang="&language;">

<bookinfo>
<title>&kdesvn-build; Script Manual</title>

<authorgroup id="authors">
<author>
<firstname>Michael</firstname><surname>Pyne</surname>
<affiliation><address><email>[email protected]</email></address></affiliation>
</author> 
<author>
<firstname>Carlos</firstname><surname>Woelz</surname>
<affiliation><address><email>[email protected]</email></address></affiliation>
</author> 


<!-- TRANS:ROLES_OF_TRANSLATORS -->

</authorgroup>

<copyright>
<year>2005</year>
<holder>Michael Pyne</holder>
</copyright>

<copyright>
<year>2005</year>
<holder>Carlos Woelz</holder>
</copyright>


<legalnotice>&FDLNotice;</legalnotice>

<date>2005-06-18</date>
<releaseinfo>0.98</releaseinfo>

<abstract>
<para>The &kdesvn-build; is a Perl script which builds and installs &kde; directly from the sources found in the &kde; &svn; repository.</para>
</abstract>

<keywordset>
<keyword>KDE</keyword>
<keyword>kdesdk</keyword>
<keyword>SVN</keyword>
<keyword>Subversion</keyword>
<keyword>KDE development</keyword>
</keywordset>

</bookinfo>


<chapter id="introduction">
<title>Introduction</title>

<para>
&kdesvn-build; is a Perl script to help users install  <ulink
url="http://www.kde.org/">&kde;</ulink> from <ulink
url="http://subversion.tigris.org/">&svn;</ulink>.  You may also want to
consider the kde-build script include with &kde;'s kdesdk module.
</para>

<para>
Here we document the &kdesvn-build; configuration file syntax and options, its
command line options, features, and an overview of all necessary steps required
to build &kde; from source, including the steps which you should perform using
other tools, or in other words, steps that are not automatically performed
by the &kdesvn-build; script.
</para>

</chapter>

<chapter id="getting-started">
<title>Getting Started</title>

<para>
In this chapter, we show how to use the &kdesvn-build; to checkout modules from the
&kde; repository and build them. We also provide a basic explanation of the &kde;
&svn; structure and the steps you have to perform before running the script.
</para>

<para>
All topics present in this chapter are covered with even more detail in the
<ulink url="http://quality.kde.org/develop/cvsguide/buildstep.php">
Building &kde; from Source Step by Step Guide</ulink>, at the
<ulink url="http://quality.kde.org">&kde; Quality Team Website</ulink>.
If you are compiling KDE for the first time, it is a good idea to read
it, or consult it as a reference source. You will find detailed information
about packaging tools and requirements, common compilation pitfalls and
strategies and information about running your new &kde; installation.
</para>

<sect1 id="before-building">
<title>Preparing the System to Build &kde;</title>

<para>
It is recommended that you download and build &kde; using a user
account. If you already have &kde; packages installed, the best choice
would be to create a different (dedicated) user to build and run the new &kde;.
The advantage of building &kde; with a dedicated user is you can not break
the base system, and you will always have a way to comfortably work when
things go wrong.
</para>

<para>
Later, you can do a root installation if you wish. This document
does not cover a root installation. If you are performing a system
wide install, you probably already know what you are doing anyway.
</para>

<para>Before using the &kdesvn-build; script (or any other building
strategy) you must install the development tools and libraries needed for &kde;.
You need the Qt library, version 3.3.0 or greater, Automake 1.8,
Autoconf 2.5X (better if >=2.57 as a bug was reported with lower versions),
the subversion (svn) client, the gcc compiler with C++ support, libxml2,
openssl, libbz2, and many more (for a complete list, visit the
<ulink url="http://www.kde.org/info/requirements/3.4.php">KDE Compilation
Requirements</ulink>). You can usually get those tools packaged for your system
from your distribution or vendor.
</para>

<para>
Some of these packages are divided into libs, programs or utilities and
development packages. You will need at least the program or library and
its development package. If in doubt, install all. The libraries you need
will change depending on the modules you intend to build, as each module
has its own requirements. The
<ulink url="http://quality.kde.org/develop/cvsguide/buildstep.php#step1">
Building &kde; from Source Step by Step Guide</ulink> has more details
about the specific tools and techniques used to install and find the
required software.
</para>

<para>
You probably already have a version of the &kdesvn-build; script installed
in your system. &kdesvn-build;requires you to create a configuration file, named
<filename>.kdesvn-buildrc</filename>. This file should be installed on
the home folder (~/), and contain all configuration data
required for the script to run, like configuration options,
compiling options, location of the sources, the destination of the installation
(prefix), the modules that should be built, &etc;. The default configuration
data is provided by the <filename>kdesvn-buildrc-sample</filename> file.
You can find more information about the syntax of the configuration file
in <xref linkend="configure-data" /> and in <xref linkend="kdesvn-buildrc" />.
</para>

<para>
A good way to get the latest version is to browse the kdesdk/scripts page
at the <ulink url="http://websvn.kde.org/trunk/KDE">websvn.kde.org</ulink> website.
You will see a list of the files available in the kdesdk/scripts directory in
the &kde; &svn; repository. Click the &kdesvn-build; link and download
the latest version of the script. Do the same for the
<filename>kdesvn-buildrc-sample</filename> file.
Make the script executable, and be sure it is in your path.
</para>

</sect1>

<sect1 id="configure-data">
<title>Setting the Configuration Data</title>

<para>
To use the script, you must have a file in your home directory called
<filename>.kdesvn-buildrc</filename>, which sets the general options and sets the modules
you would like to download and build.
</para>

<para>
Use the <filename>kdesvn-buildrc-sample</filename> file as a
template, setting global options, and the modules you want to build.
</para>

<para>
Select the server used to check out from &svn;, by setting the svn-server
global option. The default is the anonymous &svn; repository,
<emphasis>svn://anonsvn.kde.org/</emphasis>, but change it
if you have a <ulink url="http://developer.kde.org/documentation/misc/firststepsaccount">&kde;
&svn; account</ulink>, or if there is <ulink url="http://developer.kde.org/source/anonsvn.html">
a mirror close to you</ulink>.
</para>

<para>
Pay close attention to the kdedir and qtdir global variables, as the first sets
where your &kde; build is going to be installed, (by default to
<filename>~/kde</filename>), and the second where (and if) your qt library is
going to be built and installed, (by default to
<filename>~/kdesvn/build/qt-copy</filename>). You will need to know the
kdedir and qtdir location later, to set up the environment variables
that are necessary to run your new installation.
Check if the listed modules are in fact the modules you want to build.
The default options from the <filename>kdesvn-buildrc-sample</filename> file
should be enough to get a fairly complete &kde; installation.
Save the resulting as <filename>.kdesvn-buildrc</filename> in your home
folder.
</para>

<para>
If you wish to fine tune your <filename>.kdesvn-buildrc</filename>,
consult <xref linkend="kdesvn-buildrc" /> for detailed information
about all configuration options.
</para>

</sect1>

<sect1 id="building-and-troubleshooting">
<title>Using the &kdesvn-build; script</title>

<para>
Now you are ready to run the script. From a terminal window,
log in to the user you are using to compile &kde; and execute
the script:
<screen>
<prompt>&percnt;</prompt><command>su</command> <option>-</option> <replaceable>devel-username</replaceable>
<prompt>&percnt;</prompt><command>kdesvn-build</command>
</screen>
</para>

<para>
Now, the script should start downloading the sources and compiling them. It is
unlikely that you will succeed in the first time you compile &kde;. Do not despair!
Check the log files to see if you are missing some tools or development  packages
(the location of the log files is set by the log-dir variable in the configuration
file). Sometimes, the main development branch get very unstable and hard to build,
especially when a development freeze is close. Be patient. You can find more common
examples of things that can go wrong and their solutions, as well as general tips and
strategies to build &kde; in the
<ulink url="http://quality.kde.org/develop/cvsguide/buildstep.php#step1">
Building &kde; from Source Step by Step Guide</ulink>.
</para>

</sect1>

<sect1 id="environment">
<title>Setting the Environment to Run Your Fresh &kde;</title>

<para>
Assuming you are using a dedicated user to build &kde;, and you already have
an installed &kde; version, running your new &kde; may be a bit tricky, as the new &kde;
has to take precedence over the old. Change the environment variables to
make sure it does.
</para>

<para>
Open or create the <filename>.bash_profile</filename> file in the home directory with your favorite editor,
and add to the end of the file:

<programlisting>
KDEDIR=(path to kdedir)
KDEDIRS=$KDEDIR
PATH=$KDEDIR/bin:$QTDIR/bin:$PATH
LD_LIBRARY_PATH=$KDEDIR/lib:$LD_LIBRARY_PATH
export KDEDIRS PATH LD_LIBRARY_PATH
</programlisting>

If you are building the qt-copy module, add instead:

<programlisting>
QTDIR=(path to qtdir)
KDEDIR=(path to kdedir)
KDEDIRS=$KDEDIR
PATH=$KDEDIR/bin:$QTDIR/bin:$PATH
MANPATH=$QTDIR/doc/man:$MANPATH
LD_LIBRARY_PATH=$KDEDIR/lib:$QTDIR/lib:$LD_LIBRARY_PATH
export QTDIR KDEDIRS PATH MANPATH LD_LIBRARY_PATH
</programlisting>
</para>

<para>
If you are not using a dedicated user, set a different <envar>$KDEHOME</envar> for your
new environment in your <filename>.bash_profile</filename>:

<programlisting>
export KDEHOME="${HOME}/.kde-svn"

# Create it if needed
[ ! -e ~/.kde-svn ] &amp;&amp; mkdir ~/.kde-svn
</programlisting>
</para>

<note>
<para>
If later your menu is empty or too crowded with applications from your distribution,
you may have to set the xdg environment variables in your <filename>.bash_profile</filename>:

<programlisting>
XDG_CONFIG_DIRS="/etc/xdg"
XDG_DATA_DIRS="${KDEDIR}/share:/usr/share"
export XDG_CONFIG_DIRS XDG_DATA_DIRS
</programlisting>

</para>
</note>

<para>
Now that we are done with the you have to make sure that the right <application>startkde</application>
script is going to be used:
</para>

<para>
Open the <filename>.xinitrc</filename> text file (or <filename>.xsession</filename>,
depending on the distribution) from the home directory, or create it if necessary. Add the
line:

<programlisting>
exec ${KDEDIR}/bin/startkde
</programlisting>
</para>

<para>
Now start your fresh &kde;: in  BSD and Linux systems with virtual terminal support,
Ctrl+Alt+F1...F12 keystroke combinations are used to switch to Virtual Console 1 through 12.
This allows you to run more than one desktop environment at the same time. The fist six are
text terminals and the following six are graphical displays.
</para>

<para>
If when you boot you are presented to the graphical display manager instead, you can
use the new KDE environment, even if it is not listed as an option. Press Crtl + Alt + F2,
and you will be presented to a text terminal. Log in using the dedicated user and type:
</para>

<screen>
startx -- :1
</screen>

<tip>
<para>
You can run the KDE from sources and the old KDE at the same time! Log in using your regular user,
start the stable KDE desktop. Press Crtl + Alt + F2 (or F1, F3, etc..), and you will be presented
to a text terminal. Log in using the dedicated user and type "startx -- :1". You can go back to the
regular user by pressing Crtl + Alt + F6 (Or F7, F8, etc... Try them out! One of them is the right
one.) To return to KDE from sources, press Crtl + Alt + F7 (or F6, F8,etc..). Now you can switch
between your KDE versions, and test the new one knowing you can quickly return to the safety of
the stable KDE desktop.
</para>
</tip>


</sect1>

</chapter>

<chapter id="features">
<title>Script Features</title>

<para>
&kdesvn-build; features include:
</para>


<itemizedlist>

<listitem><para>
Automatically checks out or updates modules from &svn;, as
appropriate.
</para></listitem>

<listitem><para>
Times the build process for modules.
</para></listitem>

<listitem><para>
Automatically tries to rebuild modules that were using incremental
make, which is prone to failure after certain kinds of commits.
</para></listitem>

<listitem><para>
Can resume a previous script, or start the build process from a particular
module.
</para></listitem>

<listitem><para>
Comes built-in with a sane set of default options appropriate for building
a base &kde; single-user installation from the anonymous &svn; repository.
</para></listitem>

<listitem><para>
Comes with <ulink url="http://www.kde.me.uk/index.php?page=unsermake">Unsermake</ulink>
support.
</para></listitem>

<listitem><para>
Tilde-expansion for your configuration options.  For example, you can
specify:
<programlisting>qtdir ~/kdesvn/build/qt-copy</programlisting>
</para></listitem>

<listitem><para>
Configurable build, source, and logging directories
</para></listitem>

<listitem><para>
Automatically sets up a build system, with the source directory not the
same as the build directory, in order to keep the source directory
pristine. The exception is <application>qt-copy</application>, which is not designed to be built like
that (unless you would like to test the
<link linkend="conf-use-qt-builddir-hack"><quote>qt with a separate build directory hack</quote></link>).
</para></listitem>

<listitem><para>
You can specify global options to apply to every module to check out, and
you can specify options to apply to individual modules as well.
</para></listitem>

<listitem><para>
Since the autotools sometimes get out of sync with changes to the
source tree, you can force a rebuild of a module by creating a file called
.refresh-me in the build directory of the module in question, or by running
&kdesvn-build; with the <option>--refresh-build</option> option.
</para></listitem>

<listitem><para>
You can specify various environment values to be used during the build,
including <envar>KDEDIR</envar>, <envar>QTDIR</envar>, <envar>DO_NOT_COMPILE</envar>,
and <envar>CXXFLAGS</envar>.
</para></listitem>

<listitem><para>
Command logging.  Logs are dated and numbered so that you always have a
log of a script run.  Also, a special symlink called latest is created to
always point to the most recent log entry in the log directory.
</para></listitem>

<listitem><para>
If you are using a user build of &kde; instead of a system build (for which
you must be root to install), you can use the script to install for you.  I
haven not audited this code, and it makes ample use of the <function>system()</function>
call, so I would not recommend running it as root at this point.
</para></listitem>

<listitem><para>
You can use <link linkend="conf-make-install-prefix">make-install-prefix</link> to
prefix the make install command line with a separate command, which is useful
for sudo.
</para></listitem>

<listitem><para>
You can use the <link linkend="conf-apidox">apidox</link> option to automatically
build and install the API documentation for some modules.
</para></listitem>

<listitem><para>
You can check out only a portion of a &kde; &svn; module.  For example,
you could check out only the <application>taglib</application> from
<application>tdesupport</application>, or only <application>K3B</application> from
<application>extragear/multimedia</application>.  The script will automatically pull in
<application>kde-common</application> if necessary to make the build work.
</para></listitem>

<listitem><para>
You can <quote>pretend</quote> to do the operations.  If you pass
<option>--pretend</option> or <option>-p</option> on the
command line, the script will give a very verbose description of the commands
it is about to execute, without actually executing it.
</para></listitem>

<listitem><para>
Support for checking out specific branches of &svn;
modules. This work still needs to be completed, but you already select the branch you
want to build using the <link linkend="conf-module-base-path">module-base-path
configuration option</link>.
</para></listitem>

</itemizedlist>

<para>
Things that &kdesvn-build; does NOT do:
</para>

<itemizedlist>

<listitem><para>
Find the fastest &kde; &svn; mirror.  There is not even a list shipped
with the script at this point, although the default server should work
fine.
</para></listitem>

<listitem><para>
Brush your teeth. You should remember to do that yourself.
</para></listitem>

<listitem><para>
The script probably is not bug-free. Sorry.
</para></listitem>

</itemizedlist>

</chapter>

<chapter id="kdesvn-buildrc">
<title>The Format of .kdesvn-buildrc</title>

<para>
To use the script, you must have a file in your home directory called
<filename>.kdesvn-buildrc</filename>, which describes the modules you would
like to download and build.
</para>



<para>
It starts with the global options, specified like the following:
</para>

<programlisting>
global
<replaceable>option-name option-value</replaceable>
<replaceable>[...]</replaceable>
end global
</programlisting>

<para>
It is then followed by one or more module sections, specified like the
following:
</para>

<programlisting>
module <replaceable>module-name</replaceable>
<replaceable>option-name option-value</replaceable>
<replaceable>[...]</replaceable>
end module
</programlisting>

<para>
<replaceable>module-name</replaceable> must be a module from the &kde; &svn; repository (for
example, kdelibs or kdebase).  Some options override global options, some
add to global options, and some global options simply can't be overridden.
</para>

<para>
The following is an alphabetized list of options you can use.  Click on the
option to find out more about it.  If one is not documented, please e-mail the
authors using the address you can find <link linkend="authors">above</link>.
</para>

<itemizedlist>
<listitem><para><link linkend="conf-apidox">apidox</link>, to build API Documentation</para></listitem>
<listitem><para><link linkend="conf-apply-qt-patches">apply-qt-patches</link>, to enhance qt-copy</para></listitem>
<listitem><para><link linkend="conf-binpath">binpath</link>, to set the <envar>PATH</envar> variable.</para></listitem>
<listitem><para><link linkend="conf-branch">branch</link>, to checkout from a branch instead of /trunk.</para></listitem>
<listitem><para><link linkend="conf-build-dir">build-dir</link>, to set the directory to build in.</para></listitem>
<listitem><para><link linkend="conf-checkout-only">checkout-only</link>, to checkout only parts of a module.</para></listitem>
<listitem><para><link linkend="conf-colorful-output">colorful-output</link> to add color to the script output.</para></listitem>
<listitem><para><link linkend="conf-configure-flags">configure-flags</link> to define what flags to configure a module with.</para></listitem>
<listitem><para><link linkend="conf-cxxflags">cxxflags</link> to define the <envar>CXXFLAGS</envar> variable.</para></listitem>
<listitem><para><link linkend="conf-dest-dir">dest-dir</link> to change the directory name for a module.</para></listitem>
<listitem><para><link linkend="conf-disable-agent-check">disable-agent-check</link>, to keep kdesvn-build from checking on ssh-agent's status.</para></listitem>
<listitem><para><link linkend="conf-do-not-compile">do-not-compile</link>, to mark directories to skip building.</para></listitem>
<listitem><para><link linkend="conf-inst-apps">inst-apps</link>, to only build and install some directories.</para></listitem>
<listitem><para><link linkend="conf-install-after-build">install-after-build</link>, to avoid installing after the build process.</para></listitem>
<listitem><para><link linkend="conf-kdedir">kdedir</link>, to set the directory to install KDE to.</para></listitem>
<listitem><para><link linkend="conf-libpath">libpath</link>, to set the <envar>LD_LIBRARY_PATH</envar> variable.</para></listitem>
<listitem><para><link linkend="conf-make-install-prefix">make-install-prefix</link>, to run a helper program (like sudo) during make install.</para></listitem>
<listitem><para><link linkend="conf-make-options">make-options</link>, to pass options to the make program.</para></listitem>
<listitem><para><link linkend="conf-manual-build">manual-build</link>, to avoid building the module automatically.</para></listitem>
<listitem><para><link linkend="conf-manual-update">manual-update</link>, to avoid doing anything to the module automatically.</para></listitem>
<listitem><para><link linkend="conf-module-base-path">module-base-path</link>, to change where to download the module from (useful for branches and tags).</para></listitem>
<listitem><para><link linkend="conf-niceness">niceness</link>, to change the CPU priority.</para></listitem>
<listitem><para><link linkend="conf-no-rebuild-on-fail">no-rebuild-on-fail</link>, to avoid running make again if it fails.</para></listitem>
<listitem><para><link linkend="conf-qtdir">qtdir</link>, to set the path to Qt.</para></listitem>
<listitem><para><link linkend="conf-set-env">set-env</link>, to set an environment variable.</para></listitem>
<listitem><para><link linkend="conf-source-dir">source-dir</link>, to change where to download the source code to.</para></listitem>
<listitem><para><link linkend="conf-stop-on-failure">stop-on-failure</link>, to make kdesvn-build stop as soon as a failure is encountered.</para></listitem>
<listitem><para><link linkend="conf-svn-server">svn-server</link>, to change the server the sources are downloaded from.</para></listitem>
<listitem><para><link linkend="conf-use-qt-builddir-hack">use-qt-builddir-hack</link>, to give Qt a separate build directory from its source like KDE.</para></listitem>
<listitem><para><link linkend="conf-use-unsermake">use-unsermake</link>, to use the advanced unsermake build system.</para></listitem>
</itemizedlist>


<para>
Here is a table of the various options, and some comments on them.  Any
option which overrides the global option will override a command line setting
as well.
</para>

<table id="option-table">
<title>Table of Options</title>
<tgroup cols="3">

<thead>
<row>
<entry>Option-name</entry>
<entry>Module -&gt; Global Behavior</entry>
<entry>Notes</entry>
</row>
</thead>

<tbody>

<row id="conf-apidox">
<entry>apidox</entry>
<entry>Overrides global</entry>
<entry>Set this option to <quote>true</quote> in order to have &kdesvn-build; automatically
build and install the API documentation for the module after the normal build/install
process.  This only works for modules where <command>make apidox</command> does something,
including kdelibs, kdebase, and koffice, among others.
</entry>
</row>

<row id="conf-apply-qt-patches">
<entry>apply-qt-patches</entry>
<entry>Overrides global</entry>
<entry>This option is only useful for qt-copy.  If it is set to a non-zero value,
then the apply-patches script in qt-copy will be run prior to building, in
order to apply the non-official patches to the qt-copy.  Since these patches
are normally the reason for using qt-copy instead of a stock Qt, it shouldn't
do any harm to enable it.  The default is to enable the patches.</entry>
</row>

<row id="conf-binpath">
<entry>binpath</entry>
<entry>Can't be overridden</entry>
<entry><para>Set this option to set the environment variable PATH while building.
You can't override this setting in a module option.  The default value is
<filename class="directory">/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin</filename>.  This environment
variable should include the colon-separated paths of your development
toolchain.  The paths <filename class="directory">$KDEDIR/bin</filename> and
<filename class="directory">$QTDIR/bin</filename> are automatically added.  You
may use the tilde (~) for any paths you add using this option.</para>
</entry>
</row>

<row id="conf-branch">
<entry>branch</entry>
<entry>Overrides global</entry>
<entry><para>Set this option to checkout from a branch of KDE instead of the
default of "trunk", where KDE development occurs.  For instance, to checkout
KDE 3.4 branch, you would set this option to "3.4".</para>
<para>Note that some modules use a different branch name.  Notably, the
required arts module doesn't go by KDE version numbers.  The arts that
accompanied KDE 3.4 was version 1.4.</para>
<para>If kdesvn-build fails to properly download a branch with this option, you
may have to manually specify the URL to download from using the <link
linkend="conf-override-url">override-url</link> option.</para>
</entry>
</row>

<row id="conf-build-dir">
<entry>build-dir</entry>
<entry>Overrides global</entry>
<entry>Use this option to change the directory to contain the built sources. There
are three different ways to use it:
<itemizedlist>

<listitem><para>Relative to the &kde; &svn; source directory (see <link
linkend="conf-source-dir">the source-dir option</link>).  This is the default, and
the way the script worked up to version v0.61.  This mode is selected if you
type a directory name that doesn't start with a tilde (~) or a slash (/).</para>
<para>The default value is <filename class="directory">build</filename>.</para></listitem>

<listitem><para>Absolute path.  If you specify a path that begins with a /, then that path
is used directly.  For example, <filename class="directory">/tmp/kde-obj-dir/</filename>.</para></listitem>

<listitem><para>Relative to your home directory.  If you specify a path that begins with a
~, then the path is used relative to your home directory, analogous to the
shell's tilde-expansion.  For example, <filename class="directory">~/builddir</filename> would set the build
directory to <filename class="directory">/home/user-name/builddir</filename>.</para></listitem>

</itemizedlist>

Perhaps surprisingly, this option can be changed per module.

</entry>
</row>

<row id="conf-checkout-only">
<entry>checkout-only</entry>
<entry>Overrides global</entry>
<entry>Set this option to checkout &svn; sources piece by piece.  The value
for this option should be a space separated list of directories to checkout.
If you don't include the admin directory, it will automatically be included (if
necessary).  When checking out piece by piece, the admin directory will be
pulled in from kde-common, which is where it exists on the &svn; server.
Although this option overrides the global option, be aware that setting this as
a global option makes no sense.
</entry>
</row>

<row id="conf-configure-flags">
<entry>configure-flags</entry>
<entry>Appends to global option(except for qt-copy)</entry>
<entry>Use this option to specify what flags to pass to ./configure when creating
the build system for the module.  When this is used as a global-option, it is
applied to all modules that this script builds.  qt-copy uses a much different
set of configure options than the rest of &kde;, so this option
<emphasis>overrides</emphasis> the global settings when applied to qt-copy.</entry>
</row>

<row id="conf-colorful-output">
<entry>colorful-output</entry>
<entry>Can't be overridden</entry>
<entry>Set this option to false to disable the colorful output of &kdesvn-build;.
This option defaults to <quote>true</quote>.  Note that &kdesvn-build; won't output the
color codes to anything but a terminal (such as xterm, &konsole;, or the normal
Linux console).
</entry>
</row>

<row id="conf-cxxflags">
<entry>cxxflags</entry>
<entry>Appends to global option</entry>
<entry>Use this option to specify what flags to pass to <command>./configure</command> as the
<envar>CXXFLAGS</envar> when creating the build system for the module.  This option is
specified here instead of with <link
linkend="conf-configure-flags">configure-flags</link> because this option will also
set the environment variable <envar>CXXFLAGS</envar> during the build process.
</entry>
</row>

<row id="conf-dest-dir">
<entry>dest-dir</entry>
<entry>Overrides global</entry>
<entry>Use this option to change the name a module is given on disk.  For
example, if your module was extragear/network, you could rename it to
extragear-network using this option.
</entry>
</row>

<row id="conf-disable-agent-check">
<entry>disable-agent-check</entry>
<entry>Can't be overridden</entry>
<entry>Normally if you're using SSH to download the Subversion sources (such as
if you're using the svn+ssh protocol), kdesvn-build will try and make sure that
if you're using ssh-agent, it is actually managing some SSH identities.  This is
to try and prevent SSH from asking for your passphrase for every module.  You can
disable this check by setting disable-agent-check to true.
</entry>
</row>

<row id="conf-do-not-compile">
<entry>do-not-compile</entry>
<entry>Overrides global</entry>
<entry><para>Use this option to set the <envar>DO_NOT_COMPILE</envar> environment variable prior to
running the configure script.  According to the <ulink
url="http://developer.kde.org/documentation/other/developer-faq.html">&kde;
Developer FAQ</ulink>, this should cause any toplevel directory you pass to not be
built.  The directories should be space-separated.</para>

<para>Note that the sources to the programs will still be downloaded.  You can use
the <link linkend="conf-checkout-only">checkout-only</link>
directive to choose directories that you want to check out.</para>
</entry>
</row>

<row id="conf-email-address">
<entry>email-address</entry>
<entry>Can't be overridden</entry>
<entry>
<para>Set this option to the e-mail address kdesvn-build should send from should
it ever need to send e-mail.  You do not need to worry about this if you don't
use any feature which send e-mail.  (They are all disabled by default).
</para>

<para>Currently only <link linkend="conf-email-on-compile-error">email-on-compile-error</link>
needs this option.
</para>
</entry>
</row>

<row id="conf-email-on-compile-error">
<entry>email-on-compile-error</entry>
<entry>Can't be overridden</entry>
<entry>
<para>You can set this option to the email address to send a report to when a
module fails to build.  kdesvn-build will wait until all the modules are done
and collate all of the results in the report.  The report is only sent if a
module fails to build.
</para>

<para>Please see the <link linkend="conf-email-address">email-address</link>
option to set the address kdesvn-build should send from, since the default
is usually not what you want.
</para>
</entry>
</row>

<row id="conf-inst-apps">
<entry>inst-apps</entry>
<entry>Overrides global</entry>
<entry><para>This is the opposite of the <link
linkend="conf-do-not-compile">do-not-compile</link> option.  This option makes it
so that only the given toplevel directories are built.  The directories should
be space-separated.</para>

<para>Any changes don't take effect until the next time
<command>make <option>-f</option> Makefile.cvs</command> is
run, either automatically by the script, or manually by the <link
linkend="cmdline-refresh-build"><option>--refresh-build</option></link> or <link
linkend="cmdline-recreate-configure"><option>--recreate-configure</option></link> options.
</para>

<para>Note that the sources to the programs will still be downloaded.  You can use
the <link linkend="conf-checkout-only">checkout-only</link>
directive to choose directories that you want to check out.</para>
</entry>
</row>

<row id="conf-install-after-build">
<entry>install-after-build</entry>
<entry>Overrides global</entry>
<entry>This option is used to install the package after it successfully builds.
This option is enabled by default.  If you want to disable this, you need to
set this option to 0 in the configuration file.  You can also use the
<link linkend="cmdline-no-install"><option>--no-install</option></link> command line flag.
</entry>
</row>

<row id="conf-kdedir">
<entry>kdedir</entry>
<entry>Can't be overridden</entry>
<entry>This option sets the directory that &kde; will be installed to after it is
built.  It defaults to <filename class="directory">~/kde</filename>.  If you change this to a directory
needing root access, you may want to read about the <link
linkend="conf-make-install-prefix">make-install-prefix</link> option as well.</entry>
</row>

<row id="conf-libpath">
<entry>libpath</entry>
<entry>Can't be overridden</entry>
<entry>Set this option to set the environment variable LD_LIBRARY_PATH while
building.  You can't override this setting in a module option.  The default
value is blank, but the paths <filename class="directory">$KDEDIR/lib</filename> and
<filename class="directory">$QTDIR/lib</filename> are automatically
added.  You may use the tilde (~) for any paths you add using this option.
</entry>
</row>

<row id="conf-log-dir">
<entry>log-dir</entry>
<entry>Overrides global</entry>
<entry>Use this option to change the directory used to hold the log files
generated by the script.  This setting can be set on a per-module basis as of
version 0.64 or later.
</entry>
</row>

<row id="conf-make-install-prefix">
<entry>make-install-prefix</entry>
<entry>Overrides global</entry>
<entry>Set this variable to a space-separated list, which is interpreted as a
command and its options to precede the make install command used to install
modules.  This is useful for installing packages with sudo for example, but
please be careful while dealing with root privileges.</entry>
</row>

<row id="conf-make-options">
<entry>make-options</entry>
<entry>Overrides global</entry>
<entry>Set this variable in order to pass command line options to the make
command.  This is useful for programs such as <ulink
url="http://distcc.samba.org/"><application>distcc</application></ulink>.
<application>distcc</application> allows you to share your
compilation work among more than one computer.  To use it, you must use the
<option>-j</option> option to make.  Now you can.  According to the docs, 2 *
number_of_network_cpus is recommended.  I have 1 CPU total, so it would be
<option>-j2</option> in my case.</entry>
</row>

<row id="conf-manual-build">
<entry>manual-build</entry>
<entry>Overrides global</entry>
<entry>Set the option value to <quote>true</quote> to keep the build process from attempting to
build this module.  It will still be kept up-to-date when updating from &svn;.
This option is exactly equivalent to the <link
linkend="cmdline-no-build"><option>--no-build</option></link> command line option.
</entry>
</row>

<row id="conf-manual-update">
<entry>manual-update</entry>
<entry>Overrides global</entry>
<entry>Set the option value to <quote>true</quote> to keep the build process from attempting to
update (and by extension, build or install) this module.  If you set this
option for a module, then you have pretty much commented it out.
</entry>
</row>

<row id="conf-module-base-path">
<entry>module-base-path</entry>
<entry>Overrides global</entry>
<entry><para>Set this option to override &kdesvn-build;'s default directory path to the
module in question.  This can be used, for example, to pull specific branches
or tagged versions of libraries.  <ulink url="http://websvn.kde.org/">The &kde;
Source Viewer</ulink> is invaluable in helping to pick the right path.</para>
<para>Note that &kdesvn-build; constructs the final path according to the
following template:
<varname>$svn-server</varname>/home/kde/<varname>$module-base-path</varname>/<varname>$module-name</varname>.
</para>
<para>The default value is either <quote>trunk</quote> or
<quote>trunk/KDE</quote>, depending on the modulename.</para>
</entry>
</row>

<row id="conf-niceness">
<entry>niceness</entry>
<entry>Can't be overridden</entry>
<entry>Set this option to a number between 20 and 0.  The higher the number, the
lower a priority &kdesvn-build; will set for itself.  The default is 10.
</entry>
</row>

<row id="conf-no-rebuild-on-fail">
<entry>no-rebuild-on-fail</entry>
<entry>Overrides global</entry>
<entry>Set this option value to <quote>true</quote> to always prevent &kdesvn-build; from trying
to rebuild this module if it should fail an incremental build.  Normally
&kdesvn-build; will try to rebuild the module from scratch to counteract the
effect of a stray &svn; update messing up the build system.</entry>
</row>

<row id="conf-override-url">
<entry>override-url</entry>
<entry>Overrides global</entry>
<entry>If you set this option, kdesvn-build will use its value as the URL
to pass to Subversion <emphasis>completely unchanged</emphasis>.  You should
generally use this if you want to download a specific release but kdesvn-build
can't figure out what you mean using <link linkend="conf-branch">branch</link>.
</entry>
</row>

<row id="conf-qtdir">
<entry>qtdir</entry>
<entry>Can't be overridden</entry>
<entry>Set this option to set the environment variable QTDIR while building.
You can't override this setting in a module option.  If you don't specify
this option, it defaults to
<filename class="directory"><varname>$(source-dir)</varname>/build/qt-copy</filename>,
which uses the qt-copy module included in the &kde; source repository.
You may use a tilde (~) to represent your home directory.
</entry>
</row>

<row id="conf-remove-after-install">
<entry>remove-after-install</entry>
<entry>Overrides global</entry>
<entry><para>If you are low on hard disk space, you may want to use this option
in order to automatically delete the build directory (or both the source and
build directories for one-time installs) after the module is successfully
installed.
</para>
<para>Possible values for this option are:
<itemizedlist>
<listitem><para>none - Do not delete anything (This is the default).</para></listitem>
<listitem><para>builddir - Delete the build directory, but not the source.</para></listitem>
<listitem><para>all - Delete both the source code and build directory.</para></listitem>
</itemizedlist>
</para>

<para>Note that using this option can have a significant detrimental impact on
both your bandwidth usage (if you use 'all') and the time taken to compile KDE,
since kdesvn-build will be unable to perform incremental builds.</para>
</entry>
</row>

<row id="conf-set-env">
<entry>set-env</entry>
<entry>Overrides global</entry>
<entry><para>This option accepts a space-separated set of values, where the first value
is the environment variable to set, and the rest of the values is what you
want the variable set to.  For example, to set the variable RONALD to
McDonald, you would put in the appropriate section this command:</para>
<screen><command>set-env</command> <envar>RONALD</envar> <userinput>McDonald</userinput></screen>
<para>This option is special in that it can be repeated without overriding
earlier set-env settings in the same section of the configuration file.  This
way you can set more than one environment variable per module (or
globally).</para>
</entry>
</row>

<row id="conf-source-dir">
<entry>source-dir</entry>
<entry>Can't be overridden</entry>
<entry>This option is used to set the directory on your computer to store the &kde;
&svn; sources at.  If you don't specify this value, the default is
<filename class="directory">~/kdesvn</filename>.  If
you do specify this value, use an absolute path name.
</entry>
</row>

<row id="conf-svn-server">
<entry>svn-server</entry>
<entry>Can't be overridden</entry>
<entry>This option is used to set the server used to check out from &svn;.
The default is the anonymous &svn; repository, <emphasis>svn://anonsvn.kde.org/</emphasis></entry>
</row>

<row id="conf-stop-on-failure">
<entry>stop-on-failure</entry>
<entry>Overrides global</entry>
<entry>Set this option value to <quote>true</quote> to cause the script to stop execution
after an error occurs during the build or install process.  This option is off
by default.
</entry>
</row>

<row id="conf-tag">
<entry>tag</entry>
<entry>Overrides global</entry>
<entry><para>Use this option to download a specific release of a module.</para>
<para><emphasis>NOTE:</emphasis> The odds are very good that you DO NOT WANT
to use this option. KDE releases are available in tarball form from <ulink
url="ftp://ftp.kde.org/">The KDE FTP site</ulink> or one of <ulink
url="http://download.kde.org/download.php">its mirrors</ulink>.</para>
<para>If you are using kdesvn-build because you have having trouble getting
a KDE release to build on your distribution, consider using the <ulink
url="http://developer.kde.org/build/konstruct/">Konstruct build tool</ulink>
instead, which works from the release tarballs.</para>
</entry>
</row>

<row id="conf-use-qt-builddir-hack">
<entry>use-qt-builddir-hack</entry>
<entry>Overrides global</entry>
<entry>Although this option overrides the global option, it only makes sense for
qt-copy.  Set this option to <quote>true</quote> to enable the script's
<emphasis>experimental</emphasis> srcdir != builddir mode.  When enabled,
&kdesvn-build; will copy the qt-copy source module to the build directory,
and perform builds from there.  That means your QTDIR environment variable
should be set to
<filename class="directory">$(qt-copy-build-dir)/qt-copy/lib</filename>
instead.  You should also change your <link linkend="conf-qtdir">qtdir</link>
option accordingly. Incremental make should still work in this mode, as the
timestamps will be preserved after the copy.  If you use the
<link linkend="conf-apply-qt-patches">apply-qt-patches</link> option, the patches
will be applied in the build directory, not the source directory.
This option defaults to <quote>true</quote>.
</entry>
</row>

<row id="conf-use-unsermake">
<entry>use-unsermake</entry>
<entry>Overrides global</entry>
<entry><para>Set this option to <quote>true</quote> in order to use the
experimental unsermake program instead of automake when running the configure
script.  This can lead to some serious decreases in build time, especially for
<ulink url="http://www.csh.rit.edu/slashdot/distcc.html">distributed building
systems</ulink>.  This option defaults to <quote>true</quote> (for most modules).
</para>

<para>Normally if you use this option kdesvn-build will automatically keep
unsermake up-to-date.  This may start to get annoying, especially if you are
managing unsermake yourself.  If this is the case, you can set this option to
<quote>self</quote>, and kdesvn-build will still use unsermake, but will not
do anything special to keep it updated.
</para>
</entry>
</row>

</tbody>

</tgroup>
</table>

</chapter>

<chapter id="cmdline">
<title>Command Line Options and Environment Variables</title>

<para>
This script doesn't use environment variables.  If you need to set environment
variables for the build or install process, please see the <link
linkend="conf-set-env">set-env</link> option.
</para>

<para>
The script accepts the following command-line options:
</para>

<variablelist>

<varlistentry id="cmdline-help">
<term><option>--help</option></term>
<listitem><para>
only display simple help on this script.
</para></listitem>
</varlistentry>

<varlistentry id="cmdline-version">
<term><option>--version</option></term>
<listitem><para>
display the program version.
</para></listitem>
</varlistentry>

<varlistentry id="cmdline-author">
<term><option>--author</option></term>
<listitem><para>
display contact information for the
author.
</para></listitem>
</varlistentry>

<varlistentry id="cmdline-color">
<term><option>--color</option></term>
<listitem><para>
enable colorful output.
</para></listitem>
</varlistentry>

<varlistentry id="cmdline-no-color">
<term><option>--no-color</option></term>
<listitem><para>
disable colorful output.
</para></listitem>
</varlistentry>

<varlistentry id="cmdline-pretend">
<term><option>--pretend</option> (or <option>-p</option>)</term>
<listitem><para>
don't actually DO anything, but act like you did.
</para></listitem>
</varlistentry>

<varlistentry id="cmdline-quiet">
<term><option>--quiet</option> (or <option>-q</option>)</term>
<listitem><para>
Don't be as noisy with the output.  With this switch only the basics are
output.
</para></listitem>
</varlistentry>

<varlistentry id="cmdline-really-quiet">
<term><option>--really-quiet</option></term>
<listitem><para>
Only output warnings and errors.
</para></listitem>
</varlistentry>

<varlistentry id="cmdline-verbose">
<term><option>--verbose</option></term>
<listitem><para>
Be very descriptive about what's going on, and what kdesvn-build is doing.
</para></listitem>
</varlistentry>

<varlistentry id="cmdline-svn-only">
<term><option>--svn-only</option></term>
<listitem><para>
only perform the source update.
</para></listitem>
</varlistentry>

<varlistentry id="cmdline-build-only">
<term><option>--build-only</option></term>
<listitem><para>
only perform the build process.
</para></listitem>
</varlistentry>

<varlistentry id="cmdline-ignore-modules">
<term><option>--ignore-modules</option></term>
<listitem><para>
don't include the modules passed on the rest of the command line in the update/build
process.
</para></listitem>
</varlistentry>

<varlistentry id="cmdline-no-svn">
<term><option>--no-svn</option></term>
<listitem><para>
skip contacting the &svn; server.
</para></listitem>
</varlistentry>

<varlistentry id="cmdline-no-build">
<term><option>--no-build</option></term>
<listitem><para>
skip the build process.
</para></listitem>
</varlistentry>

<varlistentry id="cmdline-no-install">
<term><option>--no-install</option></term>
<listitem><para>
don't automatically install packages after they're built.
</para></listitem>
</varlistentry>

<varlistentry id="cmdline-debug">
<term><option>--debug</option></term>
<listitem><para>
enables debug mode for the script.  Currently
this means that all output will be dumped to STDOUT in addition to being
logged in the log directory like normal.  Also, many functions are much more
verbose about what they're doing in debugging mode.
</para></listitem>
</varlistentry>

<varlistentry id="cmdline-no-rebuild-on-fail">
<term><option>--no-rebuild-on-fail</option></term>
<listitem><para>
don't try and
rebuild modules that have failed building from scratch.  &kdesvn-build; will
never try to do this to a module that already was tried to be built from
scratch.
</para></listitem>
</varlistentry>

<varlistentry id="cmdline-refresh-build">
<term><option>--refresh-build</option></term>
<listitem><para>
recreate the build system and make from scratch.
</para></listitem>
</varlistentry>

<varlistentry id="cmdline-reconfigure">
<term><option>--reconfigure</option></term>
<listitem><para>
run the configure script again
without cleaning the build directory.
</para></listitem>
</varlistentry>

<varlistentry id="cmdline-recreate-configure">
<term><option>--recreate-configure</option></term>
<listitem><para>
run <command>make <option>-f</option>
Makefile.cvs</command> again to create the configure script, and continue
building as normal.  This option implies <option><link linkend="cmdline-reconfigure">--reconfigure</link></option>.
</para></listitem>
</varlistentry>

<varlistentry id="cmdline-resume">
<term><option>--resume</option></term>
<listitem><para>
which tries to continue building from where
the script stopped last time.  The script starts building the module after the
last module to be compiled last time the script was run, whether or not it
succeeded.  This option implies <link linkend="cmdline-no-svn"><option>--no-svn</option></link>.  You
should not specify other module names on the command line.
</para></listitem>
</varlistentry>

<varlistentry id="cmdline-resume-from">
<term><option>--resume-from</option></term>
<listitem><para>
which is like <link linkend="cmdline-resume"><option>--resume</option></link>, except that you supply
the module to start building from as the next parameter on the command line.  This option
implies <link linkend="cmdline-no-svn"><option>--no-svn</option></link>.  You should not specify
other module names on the command line.
</para></listitem>
</varlistentry>

<varlistentry id="cmdline-rc-file">
<term><option>--rc-file</option></term>
<listitem><para>
which interprets the next command line
parameter as the file to read the configuration options from.  The default
value for this parameter is ~/.kdesvn-buildrc.
</para></listitem>
</varlistentry>

<varlistentry id="cmdline-prefix">
<term><option>--prefix=&lt;/path/to/kde&gt;</option></term>
<listitem><para>
which allows you to change the directory that &kde; will be installed to from the command line.
This option implies <link linkend="cmdline-reconfigure"><option>--reconfigure</option></link>.
</para></listitem>
</varlistentry>

<varlistentry id="cmdline-build-system-only">
<term><option>--build-system-only</option></term>
<listitem><para>
stop after running <command>make <option>-f</option> Makefile.cvs</command>.  The configure
script will still need to be run, which &kdesvn-build; will do next time.  This lets you
prepare all the configure scripts at once so you can view the <command>./configure
<option>--help</option></command> for each module, and edit your configure-flags accordingly.
</para></listitem>
</varlistentry>

<varlistentry id="cmdline-install"><term><option>--install</option></term>
<listitem><para>
If this is the only command-line option, it tries to install all of the modules contained in
successfully-built, except for qt-copy, which doesn't need installation.  If command-line
options are specified after <option>--install</option>, they are all assumed to be modules to install.
</para></listitem>
</varlistentry>

<varlistentry id="cmdline-global-option">
<term><option>--&lt;option-name&gt;=</option></term>
<listitem><para>
You can use this option to override an option in your configuration file for
every module.  For instance, to override the <link
linkend="conf-log-dir">log-dir</link> option, you would do:
<option>--log-dir=/path/to/dir</option>.
</para></listitem>
</varlistentry>

<varlistentry id="cmdline-module-option">
<term><option>--&lt;module-name&gt;,&lt;option-name&gt;=</option></term>
<listitem><para>
You can use this option to override an option in your configuration file for
a specific module.  For instance, to override the <link
linkend="conf-use-unsermake">use-unsermake</link> option for kdemultimedia, you
would do: <option>--kdemultimedia,use-unsermake=false</option>.
</para></listitem>
</varlistentry>

</variablelist>

<para>
Any other command-line options are assumed to be modules to update and build.
Please, don't mix building with installing.
</para>

</chapter>

<chapter id="credits-and-licenses">
<title>Credits And Licenses</title>

&underFDL;

</chapter>

</book>