You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

862 lines
34 KiB

<html>
<head>
<!--
Documentation written by Michael Pyne.
-->
<title>kdecvs-build Documentation</title>
<style>
<!--
body {
background : #BCF;
}
a {
padding: 2px;
}
a:hover {
background : #FFFFC0;
margin: -1px;
border : solid black 1px;
}
-->
</style>
</head>
<body>
<div>
<h3>kdecvs-build Reference</h3>
You should always be able to find the latest version of this file at
<a href="http://grammarian.homelinux.net/kdecvs-build/">http://grammarian.homelinux.net/kdecvs-build/</a>
<ol>
<!--REMOVE_FOR_INDEX
<li><a href="#download">Download</a></li>
REMOVE_FOR_INDEX-->
<li><a href="#intro">Introduction</a></li>
<li><a href="#features">Features</a></li>
<li><a href="#.kdecvs-buildrc">Configuration File</a></li>
<li><a href="#options">Configuration File Options</a></li>
<li><a href="#cmdline">Command-line Options</a></li>
<li><a href="#envvars">Environment Variables Used</a></li>
</ol>
<!--REMOVE_FOR_INDEX
<a name="download"></a>
<h3>Download</h3>
<p>The current version is <b>$VERSION</b>.<br/><br/>
Download <a href="kdecvs-build-$VERSION.tar.gz">kdecvs-build v$VERSION: ($SIZE)</a><br/>
The file includes the script, documentation, and a sample configuration file.
</p>
<p>You can also download kdecvs-manager, a GUI configuration tool for the
script. <a href="kdecvsmanager-0.5.tar.bz2">kdecvs-manager-0.5.tar.bz2: (622.1K)</a><br/>
It uses the standard configure/make/make install motif, and includes a help
handbook.
</p>
REMOVE_FOR_INDEX-->
<a name="intro"></a>
<h3>Introduction</h3>
<p>kdecvs-build is a Perl script to help users install <a href="http://www.kde.org/">KDE</a> from
<A href="http://www.cvshome.org/">CVS</A>. Unlike the two scripts available at
<a href="http://developer.kde.org/build/compile_cvs.html">http://developer.kde.org/build/compile_cvs.html</a>,
this script neither requires nor uses <a href="http://www.cvsup.org/">CVSup</a>, for
those who either can't or don't feel like installing it.</p>
<p id="emailaddy">It is authored by Michael Pyne (mpyne (AT) grammarian (DOT) homelinux
(DOT) net), and is one of several build scripts for this purpose.</p>
<p><b>?</b> v0.86<br/>
New features:
<ul>
<li>kdecvs-build has been updated to work the latest unsermake from kdenonbeta.
Note that the old unsermake will no longer work. kdecvs-build by default automatically
updates unsermake and uses the latest version, so this change shouldn't affect you much.
</li>
<li>Don't append make options to the make command when installing anymore, as sometimes it
seems to confuse unsermake.</li>
</ul>
<p><b>2004-Sep-20:</b> v0.85<br/>
New features:
<ul>
<li>kdecvs-pywizard, the include PyQt-based configuration wizard, has been
tweaked a little. The catch, of course, is that you must already have both
Qt and PyQt installed. You may want to consider the <a
href="http://grammarian.homelinux.net/cgi-bin/kdecvs-build-wizard">online
configuration wizard</a></li>
</ul>
Bugfixes:
<ul>
<li>Modules build in the correct order again.</li>
<li>Add information on failed installations to the summary.</li>
<li>Don't show about packages that successfully built if none did so.</li>
<li>Fix brokenness with <a href="conf-make-install-prefix">make-install-prefix</a>
option.</li>
</ul>
<p><b>2004-Sep-17:</b> v0.84<br/>
New features:
<ul>
<li><p>You can quickly update and/or build a specific subdirectory within a
module at the command line. This corresponds to the <a
href="#conf-checkout-only">checkout-only</a> configuration option.</p>
<p>For example, to checkout and build the <b>khtml</b> directory of
<b>kdelibs</b>, you would type <code>kdecvs-build kdelibs/khtml</code>. You
must still have the module configured within your .kdecvs-buildrc.</p>
<p>Also, this changes the way the <a
href="conf-checkout-only">checkout-only</a> option performs the build. Now
instead of downloading the different pieces and just building the module,
kdecvs-build will download the pieces and then build the pieces in their
subdirectory. I believe this should be equivalent, but if not, just let me
know.</p>
<p>The install handler has also been changed to only install the subdirectory
you choose, so doing a kdecvs-build kdeextragear-1/amarok won't install all
of kdeextragear-1. ;-)</p>
</li>
<li>The <tt>log_command()</tt> function outputs the command that it is logging
in debug mode.</li>
</ul>
Bugfixes:
<ul>
<li>If a package didn't update, note that fact in the summary output at the end.</li>
</ul>
<p><b>2004-Aug-29:</b> v0.83<br/>
New features:
<ul>
<li>Added the <a href="#cmdline-ignore-modules">--ignore-modules</a> option,
which allows you to specify modules to skip from the CVS and build process, by
request of Matt Rogers.</li>
<li>Also, kdecvs-build is now hosted in KDE's kdenonbeta CVS module.</li>
</ul>
<p><b>2004-Aug-12:</b> v0.82<br/>
New features:
<ul>
<li>You should no longer get a build error with kdebindings due to the
argument length being too long. This is done by using an alternate method
of implementing builddir != srcdir that isn't quite as nice, but seems to
work well in practice. Bug reports on this are appreciated. Note that
kdebindings (at least for me), still refuses to build, even without unsermake,
but it does get a little farther along.</li>
<li>kdecvs-pywizard improvements. It's still nothing super-impressive yet,
but it now can enable unsermake for you (with certain modules automatically
having unsermake support disabled), and save the generated file to disk.
Also, the qt-copy module has better default configure options.</li>
<li>The valgrind module has the same hack applied to it as kdebindings, so now
it builds successfully for me.</li>
<li>Nothing super-impressive, but the building module line now lists what
module number you're on so you have something to look forward to. Based
loosely on a suggestion by David Saxton.</li>
</ul>
<p><b>2004-Aug-03:</b> v0.81<br/>
New features:
<ul>
<li>New quick-config-generators to help you quickly generate a bare, but
working configuration. There is an <a
href="/cgi-bin/kdecvs-build-wizard">online wizard</a>, and the source tarball
includes a <a
href="http://www.riverbankcomputing.co.uk/pyqt/index.php">PyQt</a>-based
program called <b>kdecvs-pywizard</b>. PyQt will also be included in the
kdebindings modules of the upcoming KDE 3.3. Note that both programs, and in
particular kdecvs-pywizard, still need work, but they should be useful for
generating a shell configuration file for new users to tweak.</li>
<li>Add a warning if you're using qt-copy but <a href="#conf-qtdir">qtdir</a>
is set incorrectly.</li>
</ul>
Bugfixes:
<ul>
<li>Fixed <a href="#conf-use-qt-builddir-hack">use-qt-builddir-hack</a> to
work on the second and subsequent runs of kdecvs-build.</li>
</ul>
<p><b>2004-Jul-25:</b> v0.80<br/>
New features:
<ul>
<li>Since I won't be able to predict what environment variables will need to
be set in the future, I've added an option to allow you to set environment
variables (either globally or per module). This option is called <a
href="#conf-set-env">set-env</a>, and it's a special option in that you can
repeat the option without overwriting the previous value you gave it, as long
as it is during the same section. The format is (in the config file):<br/>
<pre>set-env ENV-VAR value</pre><br/>
Those who have had to run the cron job for this script from a wrapper shell
script to read in /etc/profile should be able to use this option instead. If
not, I'm thinking of a way to source /etc/profile from a Perl script without
having to write my own Bourne-shell, so let me know if you need it.</li>
</ul>
Bugfixes:
<ul>
<li>Fixed an output alignment error discovered by Michal Rokos.</li>
</ul>
<hr>
<a name="features"></a>
<h3>Features</h3>
<p>Features that I can think of off the top of my head:
<ul>
<li>Automatically checks out modules from CVS or updates from CVS, as
appropriate.</li>
<li>Support for checking out specific branches of CVS modules.
<li>Times the build process for modules.</li>
<li>Will automatically try to rebuild modules that were using incremental
make, which is prone to failure after certain kinds of CVS commits.</li>
<li>Can resume a previous script, or start the build process from a particular
module.</li>
<li>Much better support for qt-copy than 0.4x.</li>
<li>Can create a .cvsrc automatically if you forget to. .cvspass still isn't
automatically created.</li>
<li><A href="http://www.kde.me.uk/index.php?page=unsermake">Unsermake</A>
support.</li>
<li>Tilde-expansion for your configuration options. For example, you can
specify: <pre>qtdir ~/kdecvs/qt-copy</pre></li>
<li>Configurable build and logging directories</li>
<li>Automatically sets up a build system, with the source directory not the
same as the build directory, in order to keep the CVS download directory
pristine. The exception is qt-copy, which isn't designed to be built like
that (unless you'd like to test <a
href="#conf-use-qt-builddir-hack">use-qt-builddir-hack</a>).</li>
<li>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.</li>
<li>Since the autotools sometimes get out of sync with changes to the CVS
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
kdecvs-build with the --refresh-build option.</li>
<li>You can specify various environment values to be used during the build,
including KDEDIR, QTDIR, DO_NOT_COMPILE, and CXXFLAGS.</li>
<li>Includes CVS over SSH support. The script CANNOT access your private key
if it is password protected, so using ssh-agent is recommended.</li>
<li>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.</li>
<li>If you're 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't audited this code, and it makes ample use of the <code>system()</code>
call, so I would not recommend running it as root at this point.</li>
<li>You can use <a href="#conf-make-install-prefix">make-install-prefix</a> to
prefix the make install command line with a separate command, which is useful
for sudo.</li>
<li>You can check out only a portion of a KDE CVS module. For example, you
could check out only taglib from kdesupport, or only K3B from kdeextragear-1.
The script will automatically pull in kde-common if necessary to make the build
work.</li>
<li>You can "pretend" to do the operations. If you pass --pretend or -p on the
command line, the script will give a very verbose description of the commands
it is about to execute, without actually executing it.</li>
<li>Can log output of all commands to a file in $KDECVSDIR/log.</li>
</ul></p>
<p>Things that kdecvs-build does NOT do:
<ul>
<li>Find the fastest KDE CVS mirror. There isn't even a list shipped
with the script at this point.</li>
<li>Brush your teeth. You should remember to do that yourself.</li>
<li>The script probably isn't bug-free. Sorry.</li>
</ul>
</p>
<hr>
<a name=".kdecvs-buildrc"></a>
<h3>Format of .kdecvs-buildrc</h3>
<p>To use the script, you must have a file in your home directory called
.kdecvs-buildrc, which describes the modules you'd like to download and
build.</p>
<p>It starts with the global options, specified like the following:</p>
<code>global<br/>
<i>option-name option-value</i><br/>
<i>[...]</i><br/>
end global
</code>
<p>It is then followed by one or more module sections, specified like the
following:</p>
<code>module <i>module-name</i><br/>
<i>option-name option-value</i><br/>
<i>[...]</i><br/>
end module
</code>
<p><i>module-name</i> must be a module from the KDE CVS 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.
</p>
<p>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 me
using the address you can find <a href="#emailaddy">above</a>.
<ul>
<li><a href="#conf-apply-qt-patches">apply-qt-patches</a></li>
<li><a href="#conf-binpath">binpath</a></li>
<li><a href="#conf-build-system-only">build-system-only</a></li>
<li><a href="#conf-checkout-only">checkout-only</a></li>
<li><a href="#conf-configure-flags">configure-flags</a></li>
<li><a href="#conf-cvs-root">cvs-root</a></li>
<li><a href="#conf-cvs-server">cvs-server</a></li>
<li><a href="#conf-cxxflags">cxxflags</a></li>
<li><a href="#conf-debug">debug</a></li>
<li><a href="#conf-disable-build-list">disable-build-list</a></li>
<li><a href="#conf-do-not-compile">do-not-compile</a></li>
<li><a href="#conf-inst-apps">inst-apps</a></li>
<li><a href="#conf-install-after-build">install-after-build</a></li>
<li><a href="#conf-kdedir">kdedir</a></li>
<li><a href="#conf-libpath">libpath</a></li>
<li><a href="#conf-lockfile">lockfile</a></li>
<li><a href="#conf-make-install-prefix">make-install-prefix</a></li>
<li><a href="#conf-make-options">make-options</a></li>
<li><a href="#conf-manual-build">manual-build</a></li>
<li><a href="#conf-no-cvs">no-cvs</a></li>
<li><a href="#conf-no-rebuild-on-fail">no-rebuild-on-fail</a></li>
<li><a href="#conf-pretend">pretend</a></li>
<li><a href="#conf-qtdir">qtdir</a></li>
<li><a href="#conf-reconfigure">reconfigure</a></li>
<li><a href="#conf-recreate-configure">recreate-configure</a></li>
<li><a href="#conf-refresh-build">refresh-build</a></li>
<li><a href="#conf-release-tag">release-tag</a></li>
<li><a href="#conf-set-env">set-env</a></li>
<li><a href="#conf-stop-on-failure">stop-on-failure</a></li>
<li><a href="#conf-use-qt-builddir-hack">use-qt-builddir-hack</a></li>
<li><a href="#conf-use-unsermake">use-unsermake</a></li>
</ul>
</p>
<hr>
<a name="options"></a>
<h3>Configuration file Options</h3>
<p>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.</p>
<table border="1" cellspacing="0" cellpadding="2">
<tr align="center" style="font-style: italic;">
<td valign="top">Option-name</td>
<td valign="top">Module -&gt; Global Behavior</td>
<td>Notes</td>
</tr>
<tr id="conf-apply-qt-patches">
<td valign="top">apply-qt-patches</td>
<td valign="top">Overrides global</td>
<td>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.</td>
</tr>
<tr id="conf-binpath">
<td valign="top">binpath</td>
<td valign="top">Can't be overridden</td>
<td><p>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
empty, which is likely not what you want. This environment variable should
include the colon-separated paths of your development toolchain. The paths
$KDEDIR/bin and $QTDIR/bin are automatically added. You may use the tilde (~)
for any paths you add using this option.</p>
<p>On my system, the setting
<pre> binpath /bin:/usr/bin:/usr/X11R6/bin</pre>
is the minimally sufficient setting.</p>
</td>
</tr>
<tr id="conf-build-dir">
<td valign="top">build-dir</td>
<td valign="top">Overrides global</td>
<td>Use this option to change the directory to contain the built sources. There
are three different ways to use it:
<ul>
<li><p>Relative to the KDE CVS source directory ($KDECVS). 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 (/).</p> <p>The default value is <b>build</b>.</p></li>
<li>Absolute path. If you specify a path that begins with a /, then that path
is used directory. For example, <i>/tmp/kde-obj-dir/</i>.</li>
<li>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, <i>~/builddir</i> would set the build
directory to <i>/home/mpyne/builddir</i> on my system.</li>
</ul>
Perhaps surprisingly, this option can be changed per module.
</td>
</tr>
<tr id="conf-build-system-only">
<td valign="top">build-system-only</td>
<td valign="top">Overrides global</td>
<td>Set this option to only create the build system for this module. What that
means is that the <code>make -f Makefile.cvs</code> command will be run, and
the configure script will be created (but not run), and make will not be run.
This option is exactly equivalent to the <a
href="#cmdline-build-system-only">--build-system-only</a> command line option.
This command is useful for checking what configure-flags each module supports
so you can change your ~/.kdecvs-buildrc.
</td>
</tr>
<tr id="conf-checkout-only">
<td valign="top">checkout-only</td>
<td valign="top">Overrides global</td>
<td>Set this option to checkout CVS 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 prepended, as it is required by the KDE build system. When checking out
piece by piece, the admin directory will be pulled in from kde-common, which
is where it exists on the CVS server. Although this option overrides the
global option, be aware that setting this as a global option makes no sense.
</td>
</tr>
<tr id="conf-configure-flags">
<td valign="top">configure-flags</td>
<td valign="top">Appends to global option<br/>(except for qt-copy)</td>
<td>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
<em>overrides</em> the global settings when applied to qt-copy.</td>
</tr>
<tr id="conf-cvs-root">
<td valign="top">cvs-root</td>
<td valign="top">Can't be overridden</td>
<td>This option is used to set the directory on your computer to store the KDE
CVS sources at. If you don't specify this value, the default is ~/kdecvs. If
you do specify this value, use an absolute path name. Note that this setting
has nothing to do with the CVSROOT environment variable. For that, see
<a href="#conf-cvs-server">cvs-server</a>.
</td>
</tr>
<tr id="conf-cvs-server">
<td valign="top">cvs-server</td>
<td valign="top">Can't be overridden</td>
<td>This option is used to set the server used to check out from CVS. As an
example, you could try :pserver:anonymous@bluemchen.kde.org:/home/kde<br/>
Please see <a
href="http://developer.kde.org/source/anoncvs.html">http://developer.kde.org/source/anoncvs.html</a>
for a list of CVS mirrors. It also has links to other CVS build scripts that
you can try.
</td>
</tr>
<tr id="conf-cxxflags">
<td valign="top">cxxflags</td>
<td valign="top">Appends to global option</td>
<td>Use this option to specify what flags to pass to ./configure as the
CXXFLAGS when creating the build system for the module. This option is
specified here instead of with <a
href="#conf-configure-flags">configure-flags</a> because this option will also
set the environment variable CXXFLAGS during the build process.
</td>
</tr>
<tr id="conf-debug">
<td valign="top">debug</td>
<td valign="top">Can't be overridden</td>
<td>This option enables the script's debug mode. At this point, all this
switch does is disable logging to files, instead dumping all output to
stdout.
</td>
</tr>
<tr id="conf-disable-build-list">
<td valign="top">disable-build-list</td>
<td valign="top">Can't be overridden</td>
<td>Normally kdecvs-build will write out the list of modules that were
successfully built to a file under the KDE CVS source directory called
'successfully-built'. If you set this option to 0, kdecvs-build will skip
writing out the file.
</td>
</tr>
<tr id="conf-do-not-compile">
<td valign="top">do-not-compile</td>
<td valign="top">Overrides global</td>
<td><p>Use this option to set the DO_NOT_COMPILE environment variable prior to
running the configure script. According to the <A
href="http://developer.kde.org/documentation/other/developer-faq.html">KDE
Developer FAQ</A>, this should cause any toplevel directory you pass to not be
built. The directories should be space-separated.</p>
<p>Note that the sources to the programs will still be downloaded. You can use
the <a href="#conf-checkout-only" class="conf-option">checkout-only</a>
directive to choose directories that you want to check out.</p>
</td>
</tr>
<tr id="conf-inst-apps">
<td valign="top">inst-apps</td>
<td valign="top">Overrides global</td>
<td><p>This is the opposite of the <a
href="#conf-do-not-compile">do-not-compile</a> option. This option makes it
so that only the given toplevel directories are built. The directories should
be space-separated.</p>
<p>Any changes don't take effect until the next time make -f Makefile.cvs is
run, either automatically by the script, or manually by the <a
href="#cmdline-refresh-build">--refresh-build</a> or <a
href="#cmdline-recreate-configure">--recreate-configure</a> options.
</p>
<p>Note that the sources to the programs will still be downloaded. You can use
the <a href="#conf-checkout-only" class="conf-option">checkout-only</a>
directive to choose directories that you want to check out.</p>
</td>
</tr>
<tr id="conf-install-after-build">
<td valign="top">install-after-build</td>
<td valign="top">Overrides global</td>
<td>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
<a href="#cmdline-no-install">--no-install</a> command line flag.
</td>
</tr>
<tr id="conf-kdedir">
<td valign="top">kdedir</td>
<td valign="top">Can't be overridden</td>
<td>Set this option to set the environment variable KDEDIR while building.
This is useful for one-user installations of KDE. See <a
href="http://developer.kde.org/build/build2ver.html">http://developer.kde.org/build/build2ver.html</a>.
You can't override this setting in a module option. If you don't specify this
option, it defaults to absolutely nothing, which will mess up the configure
script. You may use a tilde (~) to represent your home directory.
</td>
</tr>
<tr id="conf-libpath">
<td valign="top">libpath</td>
<td valign="top">Can't be overridden</td>
<td>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 $KDEDIR/lib and $QTDIR/lib are automatically
added. You may use the tilde (~) for any paths you add using this option.
</td>
</tr>
<tr id="conf-lockfile">
<td valign="top">lockfile</td>
<td valign="top">Can't be overridden</td>
<td>
<p>The path of a file to use for script locking, to prevent parallel execution.
If you don't specify this value, the default is ~/.kdecvs-lock</p>
<p>If the script is unable to create this file, it will abort.</p>
</td>
</tr>
<tr id="conf-log-dir">
<td valign="top">log-dir</td>
<td valign="top">Overrides global</td>
<td>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.
</td>
</tr>
<tr id="conf-make-install-prefix">
<td valign="top">make-install-prefix</td>
<td valign="top">Overrides global</td>
<td>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.</td>
</tr>
<tr id="conf-make-options">
<td valign="top">make-options</td>
<td valign="top">Overrides global</td>
<td>Set this variable in order to pass command line options to the make
command. This is useful for programs such as <a
href="http://distcc.samba.org/">distcc</a>. distcc allows you to share your
compilation work among more than one computer. To use it, you must use the -j
option to make. Now you can. According to the docs, 2 *
number_of_network_cpus is recommended. I have 2 CPUs total, so it would be
-j4 in my case.</td>
</tr>
<tr id="conf-make-output-file">
<td valign="top">make-output-file</td>
<td valign="top">Overrides global</td>
<td><i>DEPRECATED</i>. As of version 0.6, this option is no longer used. Now
all commands are logged, including the make process. You can use the
<a href="#conf-log-dir">log-dir</a> option to change the logging directory,
however.
</td>
</tr>
<tr id="conf-manual-build">
<td valign="top">manual-build</td>
<td valign="top">Overrides global</td>
<td>Set the option value to 'true' to keep the build process from attempting to
build this module. It will still be kept up-to-date when updating from CVS.
This option is exactly equivalent to the <a
href="#cmdline-no-build">--no-build</a> command line option.
</td>
</tr>
<tr id="conf-no-cvs">
<td valign="top">no-cvs</td>
<td valign="top">Overrides global</td>
<td>Set this option value to 'true' to prevent CVS updates for the module.
This option is exactly equivalent to the <a href="#cmdline-no-cvs">--no-cvs</a>
command line option.
</td>
</tr>
<tr id="conf-no-rebuild-on-fail">
<td valign="top">no-rebuild-on-fail</td>
<td valign="top">Overrides global</td>
<td>Set this option value to 'true' to always prevent kdecvs-build from trying
to rebuild this module if it should fail an incremental build. Normally
kdecvs-build will try to rebuild the module from scratch to counteract the
effect of a stray CVS update messing up the build system.</td>
</tr>
<tr id="conf-pretend">
<td valign="top">pretend</td>
<td valign="top">Can't be overridden</td>
<td>Set the option value to 'true' in order to "fake" the update/build or
install process. This setting results in verbose output, and is exactly
equivalent to the <a href="#cmdline-pretend">--pretend</a> command line option.
</td>
</tr>
<tr id="conf-qtdir">
<td valign="top">qtdir</td>
<td valign="top">Can't be overridden</td>
<td>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 absolutely nothing, which will mess up the
configure script.
You may use a tilde (~) to represent your home directory.
</td>
</tr>
<tr id="conf-recreate-configure">
<td valign="top">recreate-configure</td>
<td valign="top">Overrides global</td>
<td>Use this option to re-run make -f Makefile.cvs and then reconfigure the
module before building. Note that setting this option in the configuration
file isn't a great idea, use <a
href="#cmdline-recreate-configure">--recreate-configure</a> on the command line
instead.
</td>
</tr>
<tr id="conf-release-tag">
<td valign="top">release-tag</td>
<td valign="top">Overrides global</td>
<td>Use this option to force checkout from a specific KDE CVS branch. For
example, setting this to KDE_3_2_BRANCH allows you to keep up-to-date with
the current stable KDE release, including bugfixes. You can use
<a href="http://webcvs.kde.org/">KDE's WebCVS page</a> to find out what
branches exist for each CVS module.</td>
</tr>
<tr id="conf-reconfigure">
<td valign="top">reconfigure</td>
<td valign="top">Overrides global</td>
<td>Use this option to reconfigure the module before building. Note that
setting this option in the configuration file isn't a great idea, use
<a href="#cmdline-reconfigure">--reconfigure</a> on the command line instead.
</td>
</tr>
<tr id="conf-refresh-build">
<td valign="top">refresh-build</td>
<td valign="top">Overrides global</td>
<td>Set this option value to 'true' to cause the build system for this module
to start from scratch every time the script is run. This option is exactly
equivalent to the <a href="#cmdline-refresh-build">--refresh-build</a> command
line option.
</td>
</tr>
<tr id="conf-set-env">
<td valign="top">set-env</td>
<td valign="top">Overrides global</td>
<td><p>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:</p>
<pre>set-env RONALD McDonald</pre>
<p>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).</p>
</td>
</tr>
<tr id="conf-stop-on-failure">
<td valign="top">stop-on-failure</td>
<td valign="top">Overrides global</td>
<td>Set this option value to 'true' to cause the script to stop execution
after an error occurs during the build or install process. This option is off
by default.
</td>
</tr>
<tr id="conf-use-qt-builddir-hack">
<td valign="top">use-qt-builddir-hack</td>
<td valign="top">Overrides global</td>
<td>Although this option overrides the global option, it only makes sense for
qt-copy. Set this option to 'true' to enable the script's <em>experimental</em>
srcdir != builddir mode. When enabled, kdecvs-build will copy the qt-copy CVS
module to the build directory, and perform builds from there. That means your
QTDIR environment variable should be set to $(qt-copy-build-dir)/qt-copy/lib
instead. You should also change your <a href="#conf-qtdir">qtdir</a> option
accordingly.<br/><br/>
Incremental make should still work in this mode, as the timestamps will be
preserved after the copy. If you use the <a
href="#conf-apply-qt-patches">apply-qt-patches</a> option, the patches will be
applied in the build directory, not the source directory.
</td>
</tr>
<tr id="conf-use-unsermake">
<td valign="top">use-unsermake</td>
<td valign="top">Overrides global</td>
<td>Set this option to a non-zero value 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 <A
href="http://www.csh.rit.edu/slashdot/distcc.html">distributed building
systems</A>.</td>
</tr>
</table>
<hr>
<a name="cmdline"></a>
<h3>Command-line options</h3>
<p>The script accepts the following command-line options:
<ul>
<li id="cmdline-help">--help, which displays simple help on this script.</li>
<li id="cmdline-version">--version, display the program version.</li>
<li id="cmdline-author">--author, display contact information for the
author.</li>
<li id="cmdline-pretend">--pretend (or -p), don't actually DO anything, but
act like you did.</li>
<li id="cmdline-cvs-only">--cvs-only, Only perform the CVS update.</li>
<li id="cmdline-build-only">--build-only, Only perform the build process.</li>
<li id="cmdline-ignore-modules">--ignore-modules, Don't including the modules
passed on the rest of the command line in the update/build process.</li>
<li id="cmdline-no-cvs">--no-cvs, Skip contacting the CVS server.</li>
<li id="cmdline-no-build">--no-build, Skip the build process.</li>
<li id="cmdline-no-install">--no-install, Don't automatically install packages
after they're built.</li>
<li id="cmdline-debug">--debug, 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.</li>
<li id="cmdline-no-rebuild-on-fail">--no-rebuild-on-fail, Don't try and
rebuild modules that have failed building from scratch. kdecvs-build will
never try to do this to a module that already was tried to be built from
scratch.
<li id="cmdline-refresh-build">--refresh-build, Recreate the build system and
make from scratch.</li>
<li id="cmdline-reconfigure">--reconfigure, Run the configure script again
without cleaning the build directory.</li>
<li id="cmdline-recreate-configure">--recreate-configure, Run <code>make -f
Makefile.cvs</code> again to create the configure script, and continue
building as normal. This option implies --reconfigure.</li>
<li id="cmdline-resume">--resume, 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 <a href="#cmdline-no-cvs">--no-cvs</a>. You
should not specify other module names on the command line.</li>
<li id="cmdline-resume-from">--resume-from, which is like <a
href="#cmdline-resume">--resume</a>, except that you supply the module to
start building from as the next parameter on the command line. This option
implies <a href="#cmdline-no-cvs">--no-cvs</a>. You should not specify
other module names on the command line.</li>
<li id="cmdline-rc-file">--rc-file, which interprets the next command line
parameter as the file to read the configuration options from. The default
value for this parameter is ~/.kdecvs-buildrc.</li>
<li id="cmdline-build-system-only">--build-system-only, Stop after runnning
make -f Makefile.cvs. The configure script will still need to be run, which
kdecvs-build will do next time. This lets you prepare all the configure
scripts at once so you can view the ./configure --help for each module, and
edit your configure-flags accordingly.</li>
<li id="cmdline-install">--install, 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 --install, they are all assumed to be modules to install.
Note that after v0.60, modules are automatically installed if they build
successfully.</li>
Any other command-line options are assumed to be modules to update and build.
Don't mix building with installing.</li>
</ul>
</p>
<hr>
<a name="envvars"></a>
<h3>Environment Variables</h3>
The script no longer uses any environment variables. Please try to set
at least <a href="#conf-binpath">binpath</a>, <a href="#conf-qtdir">qtdir</a>,
and <a href="#conf-kdedir">kdedir</a> in your .kdecvs-buildrc. See the <a
href="#options">.kdecvs-buildrc options</a>.
</div>
<div align="center" class="thankyou">
<font size="-1"><a href="http://www.cvsup.org/">CVSup</a> is a registered trademark of John D. Polstra.
<br/>
Last modified: Sun Aug 29 00:46:53 2004</font>
</div>
</body>
</html>