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.
4328 lines
170 KiB
4328 lines
170 KiB
<?xml version="1.0" ?> |
|
<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [ |
|
<!-- |
|
Documentation for kdesrc-build. |
|
Copyright (c) 2005-2008, 2010-2013 Michael Pyne <mpyne@kde.org> |
|
|
|
Copyright (c) 2005 Carlos Leonhard Woelz <carloswoelz@imap-mail.com> |
|
Copyright (c) 2009 Burkhard Lück <lueck@hube-lueck.de> |
|
Copyright (c) 2007, 2011 Federico Zenith <federico.zenith@members.fsf.org> |
|
Copyright (c) 2009-2011 Yuri Chornoivan <yurchor@ukr.net> |
|
... and possibly others. Check the git source repository for specifics. |
|
|
|
Permission is granted to copy, distribute and/or modify this document under |
|
the terms of the GNU Free Documentation License, Version 1.2 or any later |
|
version published by the Free Software Foundation; with no Invariant |
|
Sections, no Front-Cover Texts, and no Back-Cover Texts. |
|
|
|
A copy of the license is included in COPYING.DOC. The license will be |
|
included in the generated documentation as well. |
|
--> |
|
<!ENTITY kappname "kdesrc-build"> |
|
<!ENTITY package "kdesdk"> |
|
<!ENTITY % addindex "IGNORE"> |
|
<!ENTITY % English "INCLUDE"> <!-- Change language only here --> |
|
<!ENTITY kdesrc-build "<application>kdesrc-build</application>"> |
|
<!ENTITY BSD '<acronym>BSD</acronym>'> |
|
<!ENTITY git '<application>Git</application>'> |
|
<!ENTITY cmake '<application>CMake</application>'> |
|
<!ENTITY make '<application>Make</application>'> |
|
<!ENTITY ssh '<application>SSH</application>'> |
|
<!ENTITY cron '<application>Cron</application>'> |
|
<!ENTITY subversion '<application>Subversion</application>'> |
|
<!ENTITY sudo '<application>Sudo</application>'> |
|
<!ENTITY url '<acronym>URL</acronym>'> |
|
|
|
<!-- These define shortcut entities for some of the configuration options. |
|
Just add them as necessary. |
|
--> |
|
|
|
<!ENTITY configure-flags '<link linkend="conf-configure-flags">configure-flags</link>'> |
|
<!ENTITY kdedir '<link linkend="conf-kdedir">kdedir</link>'> |
|
<!ENTITY qtdir '<link linkend="conf-qtdir">qtdir</link>'> |
|
<!ENTITY build-dir '<link linkend="conf-build-dir">build-dir</link>'> |
|
<!ENTITY module-base-path '<link linkend="conf-module-base-path">module-base-path</link>'> |
|
<!ENTITY override-url '<link linkend="conf-override-url">override-url</link>'> |
|
<!ENTITY source-dir '<link linkend="conf-source-dir">source-dir</link>'> |
|
<!ENTITY email-address '<link linkend="conf-email-address">email-address</link>'> |
|
<!ENTITY email-on-compile-error '<link linkend="conf-email-on-compile-error">email-on-compile-error</link>'> |
|
<!ENTITY colorful-output '<link linkend="conf-colorful-output">colorful-output</link>'> |
|
<!ENTITY tag '<link linkend="conf-tag">tag</link>'> |
|
<!ENTITY branch '<link linkend="conf-branch">branch</link>'> |
|
<!ENTITY do-not-compile '<link linkend="conf-do-not-compile">do-not-compile</link>'> |
|
<!ENTITY checkout-only '<link linkend="conf-checkout-only">checkout-only</link>'> |
|
<!ENTITY svn-server '<link linkend="conf-svn-server">svn-server</link>'> |
|
<!ENTITY make-install-prefix '<link linkend="conf-make-install-prefix">make-install-prefix</link>'> |
|
<!ENTITY niceness '<link linkend="conf-niceness">niceness</link>'> |
|
<!ENTITY set-env '<link linkend="conf-set-env">set-env</link>'> |
|
<!ENTITY libpath '<link linkend="conf-libpath">libpath</link>'> |
|
<!ENTITY binpath '<link linkend="conf-binpath">binpath</link>'> |
|
|
|
<!-- These define shortcut entities for some of the command line options. |
|
Just add them as necessary. |
|
--> |
|
<!ENTITY cmd-nice '<link linkend="cmdline-nice">--nice</link>'> |
|
<!ENTITY cmd-ignore-modules '<link linkend="cmdline-ignore-modules">--ignore-modules</link>'> |
|
<!ENTITY cmd-resume-from '<link linkend="cmdline-resume-from">--resume-from</link>'> |
|
<!ENTITY cmd-resume-after '<link linkend="cmdline-resume-after">--resume-after</link>'> |
|
<!ENTITY cmd-reconfigure '<link linkend="cmdline-reconfigure">--reconfigure</link>'> |
|
<!ENTITY cmd-refresh-build '<link linkend="cmdline-refresh-build">--refresh-build</link>'> |
|
]> |
|
|
|
<book id="kdesrc-build" lang="&language;"> |
|
|
|
<bookinfo> |
|
<title>&kdesrc-build; Script Manual</title> |
|
|
|
<authorgroup id="authors"> |
|
<author> |
|
<firstname>Michael</firstname><surname>Pyne</surname> |
|
<affiliation><address><email>mpyne@kde.org</email></address></affiliation> |
|
</author> |
|
<author> |
|
<firstname>Carlos</firstname><surname>Woelz</surname> |
|
<affiliation><address><email>carloswoelz@imap-mail.com</email></address></affiliation> |
|
</author> |
|
|
|
|
|
<!-- TRANS:ROLES_OF_TRANSLATORS --> |
|
|
|
</authorgroup> |
|
|
|
<copyright> |
|
<year>2006</year> |
|
<year>2007</year> |
|
<year>2008</year> |
|
<year>2009</year> |
|
<year>2010</year> |
|
<year>2011</year> |
|
<year>2012</year> |
|
<year>2013</year> |
|
<holder>Michael Pyne</holder> |
|
</copyright> |
|
|
|
<copyright> |
|
<year>2005</year> |
|
<holder>Carlos Woelz</holder> |
|
</copyright> |
|
|
|
<legalnotice>&FDLNotice;</legalnotice> |
|
|
|
<date>2013-02-19</date> |
|
<releaseinfo>1.16</releaseinfo> |
|
|
|
<abstract> |
|
<para>&kdesrc-build; is a script which builds and installs &kde; software |
|
directly from the &kde; project's source code repositories.</para> |
|
</abstract> |
|
|
|
<keywordset> |
|
<keyword>KDE</keyword> |
|
<keyword>kdesdk</keyword> |
|
<keyword>SVN</keyword> |
|
<keyword>Subversion</keyword> |
|
<keyword>git</keyword> |
|
<keyword>gitorious</keyword> |
|
<keyword>KDE development</keyword> |
|
<!-- Older names for the software --> |
|
<keyword>kdesvn-build</keyword> |
|
<keyword>kdecvs-build</keyword> |
|
</keywordset> |
|
|
|
</bookinfo> |
|
|
|
<chapter id="introduction"> |
|
<title>Introduction</title> |
|
|
|
<sect1 id="brief-intro"> |
|
<title>A brief introduction to &kdesrc-build;</title> |
|
|
|
<sect2 id="whatis-kdesrc-build"> |
|
<title>What is &kdesrc-build;?</title> |
|
|
|
<para> |
|
&kdesrc-build; is a script to help users install <ulink |
|
url="http://www.kde.org/">&kde;</ulink> software from its <ulink |
|
url="http://subversion.tigris.org/">&subversion;</ulink> and <ulink |
|
url="http://gitscm.org/">&git;</ulink> source repositories. |
|
<!-- Deliberately not KDE SC, we can also install Extragear, amarok, etc. --> |
|
</para> |
|
|
|
<para>In addition to simply installing &kde; software, the script can also be |
|
used to update the installed &kde; software after it is installed. This allows |
|
you to keep up-to-date with &kde; development. |
|
</para> |
|
|
|
<para>The &kdesrc-build; script can be used to maintain a single individual |
|
module or an entire &kde; desktop depending on how it is configured. |
|
</para> |
|
</sect2> |
|
|
|
<sect2 id="operation-in-a-nutshell"> |
|
<title>&kdesrc-build; operation <quote>in a nutshell</quote></title> |
|
|
|
<para>&kdesrc-build; intentionally works by using the same tools available to |
|
the user at the command-line. When &kdesrc-build; is run, the following |
|
sequence is followed: |
|
</para> |
|
|
|
<orderedlist> |
|
<listitem><para>&kdesrc-build; reads in the <link linkend="cmdline">command |
|
line</link> and <link linkend="configure-data">configuration file</link>, to |
|
determine what to build, compile options to use, where to install, |
|
&etc;</para></listitem> |
|
|
|
<listitem><para>&kdesrc-build; performs a source update for each <link |
|
linkend="module-concept">module</link>. The update continues until all modules |
|
have been updated. Modules that fail to update normally do not stop the build |
|
– you will be notified at the end which modules did not |
|
update.</para></listitem> |
|
</orderedlist> |
|
|
|
</sect2> |
|
</sect1> |
|
|
|
<sect1 id="intro-toc"> |
|
<title>Documentation Overview</title> |
|
|
|
<para> |
|
This guide is an overview to describe the following aspects of &kdesrc-build; |
|
operation: |
|
</para> |
|
|
|
<itemizedlist> |
|
<listitem><para>An <link linkend="getting-started">overview</link> of the steps |
|
required to get started.</para></listitem> |
|
<listitem><para>Notable <link linkend="features">features</link>.</para></listitem> |
|
<listitem><para>The <link linkend="configure-data">configuration file</link> syntax |
|
and options.</para></listitem> |
|
<listitem><para>The <link linkend="cmdline">command line options</link>.</para></listitem> |
|
</itemizedlist> |
|
|
|
<para>Also documented are the steps which you should perform using |
|
other tools, (in other words, steps that are not automatically performed by |
|
&kdesrc-build;). |
|
</para> |
|
|
|
</sect1> |
|
</chapter> |
|
|
|
<chapter id="getting-started"> |
|
<title>Getting Started</title> |
|
|
|
<para> |
|
In this chapter, we show how to use the &kdesrc-build; to checkout modules from |
|
the &kde; repository and build them. We also provide a basic explanation of the |
|
&kde; source code 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://techbase.kde.org/Getting_Started/Build/KDE4"> |
|
Building &kde; 4 from Source</ulink> article, at the |
|
<ulink url="http://techbase.kde.org/">&kde; TechBase site</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> |
|
|
|
<sect2 id="before-building-users"> |
|
<title>Setup a new user account</title> |
|
|
|
<para> |
|
It is recommended that you use a different user account to build, install, |
|
and run your &kde; software from, since less permissions are required, and |
|
to avoid interfering with your distribution's packages. |
|
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;. |
|
</para> |
|
|
|
<tip><para>Leaving your system &kde; untouched also allows you to have an |
|
emergency fallback in case a compiled &kde; is unstable for whatever reason. |
|
</para></tip> |
|
|
|
<para> |
|
Later, you can do a system installation if you wish. This document |
|
does not cover a system installation. If you are performing a system |
|
wide install, you should already know what you are doing. If not, then you |
|
may want to consult the documentation, or help sites, for your distribution |
|
in order to prepare and use the system installation correctly. |
|
</para> |
|
|
|
</sect2> |
|
<sect2 id="before-building-preparation"> |
|
<title>Ensure your system is ready to build &kde; source</title> |
|
|
|
<para>Before using the &kdesrc-build; script (or any other building |
|
strategy) you must install the development tools and libraries needed for &kde;. |
|
The nearly complete list of required tools can be found from |
|
the <ulink url="http://techbase.kde.org/Getting_Started/Build/Requirements">KDE |
|
TechBase Build Requirements</ulink> page. |
|
</para> |
|
|
|
<para>Here is a list of some of the things you will need:</para> |
|
<itemizedlist> |
|
|
|
<listitem><para>You will need &cmake;. The required version will vary |
|
depending on what version of &kde; 4 you are building, see TechBase for |
|
specifics, however a good bet is to have the most recent available version. |
|
&cmake; is the program used by &kdesrc-build; to handle the actual |
|
configuration and build steps for the vast majority of &kde; software. |
|
</para></listitem> |
|
|
|
<listitem><para>You must also install the client software used to checkout |
|
the &kde; source code. This means you need at least the following:</para> |
|
|
|
<itemizedlist> |
|
<listitem><para>&subversion;, which used to be the only source code manager in use, and is still |
|
used for some modules with large data files. You can check |
|
if you have it by running <userinput><command>svn |
|
<option>--version</option></command></userinput>.</para></listitem> |
|
|
|
<listitem><para>You will need the <ulink url="http://gitscm.org/">Git |
|
source control manager</ulink> installed as well, for &kde;'s <ulink |
|
url="http://projects.kde.org/">git-based projects.</ulink> |
|
.</para></listitem> |
|
|
|
<listitem><para>Although it is not required, the <ulink |
|
url="http://bazaar.canonical.com/">Bazaar</ulink> source control manager is |
|
used for a single module (libdbusmenu-qt) that is required for the &kde; |
|
libraries. Most users can install this library through their distribution |
|
packages but &kdesrc-build; supports building it as well if you desire. But to |
|
build libdbusmenu-qt, you must have Bazaar installed.</para></listitem> |
|
|
|
</itemizedlist></listitem> |
|
|
|
<listitem><para>You will need a full C++ development environment. GCC 4.6 or |
|
later is recommended.</para></listitem> |
|
|
|
<listitem><para>Finally, you will need a <quote>make</quote> tool. GNU Make is |
|
recommended and should be available through your package manager. After |
|
<command>cmake</command> has been run by &kdesrc-build;, |
|
<command>make</command> handles actually running the build process, which is |
|
why it is required.</para></listitem> |
|
|
|
</itemizedlist> |
|
|
|
<note><para>Most operating system distributions include a method of easily |
|
installing required development tools. Consult the TechBase <ulink |
|
url="http://techbase.kde.org/Getting_Started/Build/KDE4">Getting Started</ulink> |
|
page's <quote>Required Packages from your Distribution</quote> section to see |
|
if these instructions are already available.</para></note> |
|
|
|
<para>One exception to the required libraries is the &Qt; library. |
|
&kdesrc-build; will normally install a copy of &Qt; whether you have it |
|
installed or not, so it is not necessary for you to have it. If you do not want |
|
to use the &Qt; copy, you need to do these things:</para> |
|
|
|
<itemizedlist> |
|
<listitem> |
|
<para>Make sure to remove the qt module from your <link |
|
linkend="configure-data">configuration file</link>, as you will not need it, |
|
and having it would add extra time to your build.</para> |
|
</listitem> |
|
|
|
<listitem> |
|
<para>Change the setting of the <link linkend="conf-qtdir">qtdir</link> |
|
option in your <link linkend="configure-data">configuration file</link> to |
|
point to your system &Qt;. The location of your system &Qt; can be found |
|
by running <userinput><command>qmake</command> <option>-query</option> |
|
<option>QT_INSTALL_PREFIX</option></userinput>.</para> |
|
|
|
<note><para>The <command>qmake</command> command might be called |
|
<command>qmake4</command> or <command>qmake-qt4</command> on your |
|
distribution.</para></note> |
|
</listitem> |
|
|
|
<listitem> |
|
<para>If you do not already have &Qt; installed, install it, including any |
|
relevant -dev or -devel packages. You will need at least |
|
&Qt; 4.7 if you are building &kde; 4.</para> |
|
</listitem> |
|
</itemizedlist> |
|
|
|
<important><para> |
|
Some of these packages are divided into libraries (or programs or utilities), |
|
and development packages. You will need at least the program or library |
|
<emphasis>and</emphasis> its development package. 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://techbase.kde.org/Getting_Started/Build/KDE4#Required_packages_from_your_distribution">&kde; |
|
TechBase</ulink> has more details about the specific tools and techniques used |
|
to install and find the required software. |
|
</para></important> |
|
|
|
</sect2> |
|
|
|
<sect2 id="before-building-prepare-script"> |
|
<title>Setup &kdesrc-build;</title> |
|
|
|
<sect3 id="get-kdesrc-build"> |
|
<title>Install &kdesrc-build;</title> |
|
<para> |
|
You probably already have a version of the &kdesrc-build; script installed |
|
in your system. However, if you do not, you can download it from |
|
<ulink url="http://kdesrc-build.kde.org/">&kdesrc-build; home page</ulink>, |
|
or you can find it from its home in the &kde; source repository.</para> |
|
|
|
<tip><para>If you use a more recent &kdesrc-build; by downloading from its |
|
website, you should remember to run the &kdesrc-build; script you downloaded. |
|
You can use the <option>--version</option> option to &kdesrc-build; as a quick |
|
way to verify this.</para></tip> |
|
|
|
<orderedlist> |
|
<listitem><para>To download &kdesrc-build; from its home page, simply go to the |
|
<ulink url="http://kdesrc-build.kde.org/">&kdesrc-build; home page</ulink> and download the latest appropriate release. The release is |
|
packaged as a compressed tarball archive, which you can extract using &ark; or |
|
<command>tar</command>. The contents of the archive include the actual |
|
&kdesrc-build; script, a sample configuration file |
|
(<filename>kdesrc-buildrc-sample</filename>), and a quick-setup |
|
program.</para></listitem> |
|
|
|
<listitem><para>Or, you can obtain &kdesrc-build; from its source repository, |
|
by running:</para> |
|
<programlisting> |
|
<prompt>$ </prompt><userinput><command>git <option>clone</option> <option>git://anongit.kde.org/kdesrc-build</option> <option><filename class="directory"><replaceable>~/kdesrc-build</replaceable></filename></option></command></userinput> |
|
</programlisting> |
|
|
|
<para>Replace <option><replaceable>~/kdesrc-build</replaceable></option> with |
|
the directory you would like to install to. |
|
</para></listitem> |
|
</orderedlist> |
|
|
|
<para>No matter which technique you use, you need to make sure that the |
|
<filename>kdesrc-build</filename> file is executable. For convenience you |
|
should make sure it is in a directory contained in the <envar>PATH</envar> |
|
environment variable, otherwise you may get messages saying that the command |
|
was not found, or you may run a previously-installed version by mistake.</para> |
|
</sect3> |
|
|
|
<sect3 id="setup-rcfile"> |
|
<title>Prepare the configuration file</title> |
|
|
|
<para>&kdesrc-build; uses a <link linkend="configure-data">configuration |
|
file</link> (located at <filename>~/.kdesrc-buildrc</filename>) to control |
|
which modules are built, where they are installed to, etc.</para> |
|
|
|
<para>You can use a program included with &kdesrc-build;, called |
|
<application>kdesrc-build-setup</application> in order to prepare a simple |
|
kdesrc-build configuration. You can then edit the |
|
<filename>~/.kdesrc-buildrc</filename> from there to make any changes you see |
|
fit.</para> |
|
|
|
<para><application>kdesrc-build-setup</application> itself runs from a terminal |
|
(instead of using a graphical interface), just like &kdesrc-build;, so you can |
|
use it even if you have no graphical interface available yet.</para> |
|
|
|
<tip><para>You can use the included <filename>kdesrc-buildrc-sample</filename> |
|
sample configuration to get explanations as to the various options available. |
|
</para></tip> |
|
|
|
<para>You can find more information about the syntax of the <link linkend="configure-data">configuration file</link> |
|
in <xref linkend="configure-data" /> and in <xref linkend="kdesrc-buildrc" />. |
|
</para> |
|
|
|
</sect3> |
|
</sect2> |
|
</sect1> |
|
|
|
<sect1 id="configure-data"> |
|
<title>Setting the Configuration Data</title> |
|
|
|
<para> |
|
To use &kdesrc-build;, you should have a file in your home directory called |
|
<filename>.kdesrc-buildrc</filename>, which sets the general options and sets the modules |
|
you would like to download and build. |
|
</para> |
|
|
|
<note><para>It is possible to use different configuration files for &kdesrc-build;, |
|
which is described in <xref linkend="kdesrc-buildrc" />. If you need to use |
|
multiple configurations, please see that section. Here, we will assume the |
|
configuration is stored in <filename>~/.kdesrc-buildrc</filename>.</para></note> |
|
|
|
<para> |
|
The easiest way to proceed is to use the |
|
<filename>kdesrc-buildrc-sample</filename> file as a template, changing global |
|
options to match your wants, and also change the list of modules you want to |
|
build. |
|
</para> |
|
|
|
<para> |
|
The default settings should actually already be appropriate to perform a |
|
&kde; build. Some settings that you may wish to alter include: |
|
|
|
<itemizedlist> |
|
<listitem><para><link linkend="conf-use-stable-kde">use-stable-kde</link> to |
|
change the default version of &kde; modules to build. By default &kdesrc-build; |
|
will build the trunk version of &kde;. If you want to build |
|
the latest stable release of &kde; instead of using your distribution packages |
|
you would set this option to <replaceable>true</replaceable>. |
|
</para> |
|
|
|
<tip><para>Note that this option relies on information available from the |
|
&kde; project database, so this feature only works for these modules. |
|
See also <xref linkend="kde-projects-module-sets"/>. |
|
</para></tip> |
|
</listitem> |
|
|
|
<listitem><para><link linkend="conf-kdedir">kdedir</link>, which changes the |
|
destination directory that &kde; is installed to. This defaults to |
|
<filename class="directory">~/kde</filename>, which is a single-user installation.</para></listitem> |
|
|
|
<listitem><para><link linkend="conf-qtdir">qtdir</link>, which controls the |
|
path to the installation of &Qt; to use. The default is to use a &Qt; compiled |
|
by &kdesrc-build;, using the special qt module and the latest available |
|
source code. |
|
(<filename class="directory">~/kdesrc/build/qt</filename>).</para> |
|
|
|
<note><para>This also controls where to install qt.</para></note> |
|
</listitem> |
|
|
|
<listitem><para><link linkend="conf-svn-server">svn-server</link>, which |
|
selects what &url; to download the sources from. This is useful if you are a |
|
developer with a <ulink url="http://techbase.kde.org/Contribute/First_Steps_with_your_KDE_SVN_Account">&kde; |
|
&subversion; account</ulink>.</para></listitem> |
|
|
|
<listitem><para>You will probably want to select different modules to build, which |
|
is described in <xref linkend="selecting-modules"/>.</para></listitem> |
|
</itemizedlist> |
|
</para> |
|
</sect1> |
|
|
|
<sect1 id="kde-modules-and-selection"> |
|
<title>Module Organization and selection</title> |
|
|
|
<sect2 id="kde-layers"> |
|
<title>KDE Software Organization</title> |
|
|
|
<para> |
|
&kde; software is split into different components, many of which can be built |
|
by &kdesrc-build;. Understanding this organization will help you properly |
|
select the software modules that you want built. |
|
</para> |
|
|
|
<orderedlist> |
|
<listitem><para>At the lowest level comes Digia's &Qt; library, which is a |
|
very powerful, cross-platform <quote>toolkit</quote> library. &kde; is based on |
|
&Qt;, and some of the non-&kde; libraries required by &kde; are also based on |
|
&Qt;. &kdesrc-build; can build &Qt;, or use the one already installed on your |
|
system if it is a recent enough version.</para></listitem> |
|
|
|
<listitem><para>On top of &Qt; are required libraries that are necessary for |
|
&kde; software to work. Some of these libraries are not considered part of |
|
&kde; itself due to their generic nature, but are still essential to the &kde; |
|
Platform. These libraries tended to get combined into a single |
|
<literal>kdesupport</literal> module.</para> |
|
|
|
<note><para>As of &kde; Platform 4.6, many of the libraries in the kdesupport |
|
module are being migrated over to <ulink |
|
url="http://projects.kde.org/">git.kde.org</ulink>, although they are still not |
|
considered part of the Platform.</para></note> |
|
</listitem> |
|
|
|
<listitem><para>On top of these essential libraries comes the &kde; Platform. |
|
These are the libraries that are required for &kde; applications to work. A |
|
full desktop environment is not provided by the Platform however. |
|
</para> |
|
|
|
<para>For &kdesrc-build;, the Platform layer consists of the <literal>kdelibs</literal>, |
|
<literal>kdepimlibs</literal>, and <literal>kde-runtime</literal> modules.</para> |
|
</listitem> |
|
|
|
<listitem><para>On top of the Platform, come several different things:</para> |
|
<itemizedlist> |
|
<listitem><para><quote>Third-party</quote> applications. These are |
|
applications that use the &kde; Platform but are not authored by or in |
|
association with the &kde; project.</para></listitem> |
|
|
|
<listitem><para>A full <quote>workspace</quote> desktop environment. |
|
This is what users normally see when they <quote>log-in to |
|
&kde;</quote>. This is provided by the &plasma; Desktop, mostly in |
|
<literal>kde-workspace</literal>. </para></listitem> |
|
|
|
<listitem><para>The &kde; Software Compilation. This is a collection of |
|
useful software included with the Platform and &plasma; Desktop, |
|
grouped into individual modules. These are the modules that have names |
|
starting with <literal>kde</literal>. For example, |
|
<literal>kdepim</literal> is a component of the Software Compilation |
|
that contains email, news-reading, calendar/organizational software, |
|
&etc;, while <literal>kdegames</literal> contains a collection of |
|
high-quality games to while away the time.</para></listitem> |
|
|
|
<listitem><para>Finally, there is a collection of software (also |
|
collected in modules) whose development is supported by &kde; resources |
|
(such as translation, source control, bug tracking, &etc;) but is not |
|
released by &kde; or considered part of the Software Compilation. These |
|
modules are known as <quote>Extragear</quote>, and have module names |
|
such as <literal>extragear/network</literal>. As with |
|
<literal>kdesupport</literal>, some of these Extragear applications are |
|
migrating to <ulink |
|
url="http://projects.kde.org/">git.kde.org</ulink>.</para></listitem> |
|
</itemizedlist> |
|
</listitem> |
|
</orderedlist> |
|
</sect2> |
|
|
|
<sect2 id="selecting-modules"> |
|
<title>Selecting modules to build</title> |
|
|
|
<para>Selecting which of the possible modules to build is controlled by |
|
<link linkend="kdesrc-buildrc">the configuration file</link>. |
|
After the <literal>global</literal> section is a list of modules to build, |
|
bracketed by module ... end module lines. An example entry for a module is |
|
shown in <xref linkend="conf-module-example"/>.</para> |
|
|
|
<example id="conf-module-example"> |
|
<title>Example module entry in the configuration file</title> |
|
<programlisting> |
|
module <replaceable>module-name</replaceable> |
|
# Options for this module go here, example: |
|
<link linkend="conf-make-options">make-options</link> -j4 # Run 4 compiles at a time |
|
end module |
|
</programlisting> |
|
</example> |
|
|
|
<tip><para>It is possible to declare a module with no options. In fact, most of |
|
your modules will likely be declared this way.</para></tip> |
|
|
|
<para>&kdesrc-build; only builds the modules you have listed in your configuration |
|
file. In addition, the modules are built in the order specified in the configuration |
|
file. For this reason you should ensure that the order of modules in your |
|
configuration file is consistent with the organization given in |
|
<xref linkend="kde-layers"/>.</para> |
|
|
|
<para>There is a sample file that comes with &kdesrc-build; called |
|
<filename>kdesrc-buildrc-sample</filename>. It is recommended to copy this file |
|
to a file called <filename>~/.kdesrc-buildrc</filename> (<emphasis>Note the |
|
leading period in front of kdesrc-buildrc!</emphasis>). Afterwards, edit the |
|
new file to adjust the default options to your liking. (Each option is described |
|
in more detail in <xref linkend="kdesrc-buildrc"/>). The default modules |
|
should be enough to ensure a fairly complete &kde; installation, however you |
|
can remove many of the modules that show up after <literal>kdebase</literal> |
|
if you'd like to save disk space or build time.</para> |
|
|
|
</sect2> |
|
|
|
<sect2 id="module-sets"> |
|
<title>Module Sets</title> |
|
|
|
<para>&kdesrc-build; is usually able to guess where to download the source code |
|
for a given module quite easily, by using your setting for <link |
|
linkend="conf-svn-server">svn-server</link> and the module name for each module |
|
to create a single Subversion URL, which describes exactly where to download |
|
the source code from.</para> |
|
|
|
<para>With the move to Git, many larger Subversion modules were further |
|
sub-divided in the process, and there was no guarantee of where to find a |
|
module based just on the module name. Because of this, a concept called |
|
<quote>module sets</quote> was developed for &kdesrc-build; 1.12.1.</para> |
|
|
|
<para>By using a module set, you can quickly declare many Git modules to be |
|
downloaded and built, as if you'd typed out a separate module declaration for |
|
each one. The <link linkend="conf-repository">repository</link> option is |
|
handled specially to setup where each module is downloaded from, which every |
|
other option contained in the module set is copied to every module generated |
|
in this fashion.</para> |
|
|
|
<example id="example-using-module-sets"> |
|
<title>Using module sets</title> |
|
<programlisting> |
|
global |
|
<option><link linkend="conf-git-repository-base">git-repository-base</link></option> <replaceable>kde-git</replaceable> <replaceable>kde:</replaceable> |
|
end global |
|
|
|
module <replaceable>qt</replaceable> |
|
# Options removed for brevity |
|
end module |
|
|
|
module-set <replaceable>kde-support-libs</replaceable> |
|
<option><link linkend="conf-repository">repository</link></option> <replaceable>kde-git</replaceable> |
|
<option><link linkend="conf-use-modules">use-modules</link></option> <replaceable>automoc</replaceable> <replaceable>attica</replaceable> <replaceable>akonadi</replaceable> |
|
end module-set |
|
|
|
# Other modules as necessary... |
|
module <replaceable>kdesupport</replaceable> |
|
end module |
|
</programlisting> |
|
</example> |
|
|
|
<para>In <xref linkend="example-using-module-sets"/> a brief module set is |
|
shown. When &kdesrc-build; encounters this module set, it acts as if, for |
|
every module given in <option>use-modules</option>, that an individual module |
|
has been declared, with its <option>repository</option> equal to the |
|
module-set's <option>repository</option> followed immediately by the given |
|
module name.</para> |
|
|
|
<para>In addition, other options can be passed in a module set, which are |
|
copied to every new module that is created this way. By using module-set it is |
|
possible to quickly declare many Git modules that are all based on the same |
|
repository URL. In addition, since &kdesrc-build; 1.13, it is possible to |
|
give module-sets a name (as shown in the example), which allows you to quickly |
|
refer to the entire group of modules from the command line.</para> |
|
|
|
<note><para>Module sets are used in supporting module downloads from |
|
the &kde; <ulink url="https://projects.kde.org/">projects.kde.org</ulink> |
|
module database. See also <xref linkend="kde-projects-module-sets"/>. |
|
</para></note> |
|
|
|
<para>Module sets use the options <simplelist><member><link |
|
linkend="conf-git-repository-base">git-repository-base</link></member> |
|
<member><link |
|
linkend="conf-use-modules">use-modules</link></member></simplelist></para> |
|
</sect2> |
|
|
|
<sect2 id="kde-projects-module-sets"> |
|
<title>Automatically finding modules from the official &kde; module |
|
database</title> |
|
|
|
<para>With the migration of &kde; source code to be hosted on git.kde.org, |
|
there has been an explosive growth in the number of modules (for instance, |
|
a single Subversion module called <literal>kdegraphics</literal> becomes |
|
16 different Git modules).</para> |
|
|
|
<para>This was done mostly because each Git module contains the entire project |
|
history (this is actually less wasteful of disk space than it sounds for the |
|
vast majority of &kde; repositories as &git; is highly efficient at storing |
|
repositories).</para> |
|
|
|
<para>&kde; allows for grouping Git repositories into collections |
|
of related modules (e.g. kdegraphics). These modules can themselves be grouped |
|
(e.g. &kde; Software Compilation). Git doesn't recognize these groupings, but |
|
&kdesrc-build; can be configured to handle these groups.</para> |
|
|
|
<para>The way this is done is by using <link linkend="module-sets">module |
|
sets</link>. Instead of using a specific <literal>git://</literal> repository, |
|
or a repository name created by <link |
|
linkend="conf-git-repository-base">git-repository-base</link>, a special |
|
repository name, <quote><literal>kde-projects</literal></quote> is used.</para> |
|
|
|
<para>&kdesrc-build; will recognize that the <literal>kde-projects</literal> |
|
repository requires special handling, and adjust the build process |
|
appropriately. Among other things, &kdesrc-build; will:</para> |
|
|
|
<itemizedlist> |
|
|
|
<listitem><para>Download the latest module database from <ulink |
|
url="https://projects.kde.org/">projects.kde.org</ulink>.</para></listitem> |
|
|
|
<listitem><para>Try to find a module with the name given in the module set's |
|
<option>use-modules</option> setting.</para></listitem> |
|
|
|
<listitem><para>For every module that is found, &kdesrc-build; will see if a |
|
repository setting exists for that module in the database. If there is a |
|
repository, &kdesrc-build; will automatically use that to download or update |
|
the source code. If there is no repository, &kdesrc-build; treats that module |
|
like a group, and tries to include all &git; source repositories that it finds |
|
in that group.</para></listitem> |
|
|
|
</itemizedlist> |
|
|
|
<note><para>In the current database, some module groups not only have a |
|
collection of modules, but they <emphasis>also</emphasis> declare their own |
|
&git; repository. In these situations &kdesrc-build; will currently prefer the |
|
group's &git; repository instead of including the childrens' repositories. |
|
</para></note> |
|
|
|
<para>The following example shows how to use the &kde; module database to |
|
install the Phonon multimedia library.</para> |
|
|
|
<informalexample> |
|
<programlisting> |
|
module-set <replaceable>media-support</replaceable> |
|
# This option must be kde-projects to use the module database. |
|
<option><link linkend="conf-repository">repository</link></option> <literal>kde-projects</literal> |
|
|
|
# This option chooses what modules to look for in the database. |
|
<option><link linkend="conf-use-modules">use-modules</link></option> <replaceable>phonon/phonon</replaceable> <replaceable>phonon-gstreamer</replaceable> <replaceable>phonon-vlc</replaceable> |
|
end module-set |
|
</programlisting> |
|
</informalexample> |
|
|
|
<tip><para><literal>phonon/phonon</literal> is used since (with the current |
|
project database) &kdesrc-build; would otherwise have to decide between the |
|
group of projects called <quote>phonon</quote> or the individual project named |
|
<quote>phonon</quote>. Currently &kdesrc-build; would pick the former, which |
|
would build many more backends than needed.</para></tip> |
|
|
|
<para>The following example is perhaps more realistic, and shows a feature only |
|
available with the &kde; module database: Building all of the &kde; graphics |
|
applications with only a single declaration.</para> |
|
|
|
<informalexample> |
|
<programlisting> |
|
module-set <replaceable>kdegraphics</replaceable> |
|
# This option must be kde-projects to use the module database. |
|
<option><link linkend="conf-repository">repository</link></option> <literal>kde-projects</literal> |
|
|
|
# This option chooses what modules to look for in the database. |
|
<option><link linkend="conf-use-modules">use-modules</link></option> <literal>kdegraphics/libs</literal> <literal>kdegraphics/*</literal> |
|
end module-set |
|
</programlisting> |
|
</informalexample> |
|
|
|
<para>There are two important abilities demonstrated here:</para> |
|
|
|
<orderedlist> |
|
|
|
<listitem><para>&kdesrc-build; allows you to specify modules that are |
|
descendents of a given module, without building the parent module, by using the |
|
syntax <userinput><replaceable>module-name</replaceable>/*</userinput>. It is |
|
actually required in this case since the base module, kdegraphics, is marked as |
|
inactive so that it is not accidentally built along with its children modules. |
|
Specifying the descendent modules allows &kdesrc-build; to skip around the |
|
disabled module. |
|
</para></listitem> |
|
|
|
<listitem><para>&kdesrc-build; will also not add a given module to the build |
|
list more than once. This allows us to manually set |
|
<literal>kdegraphics/libs</literal> to build first, before the rest of |
|
<literal>kdegraphics</literal>, without trying to build |
|
<literal>kdegraphics/libs</literal> twice. |
|
</para></listitem> |
|
</orderedlist> |
|
|
|
<note><para>It is worth noting that &kdesrc-build; will try to build modules |
|
in the right order, such as if only <literal>kdegraphics/*</literal> had been |
|
listed above, but this depends on other databases being kept up-to-date. You |
|
can manually list modules in the proper order if necessary by using the |
|
technique described above. |
|
</para></note> |
|
</sect2> |
|
|
|
<sect2 id="ignoring-project-modules"> |
|
<title>Filtering out &kde; project modules</title> |
|
|
|
<para>You might decide that you'd like to build all programs within a &kde; |
|
module grouping <emphasis>except</emphasis> for a given program.</para> |
|
|
|
<para>For instance, the <literal>kdeutils</literal> group includes a program |
|
named <application>kremotecontrol</application>. If your computer does not have |
|
the proper hardware to receive the signals sent by remote controls then you may |
|
decide that you'd rather not download, build, and install |
|
<application>kremotecontrol</application> every time you update |
|
<literal>kdeutils</literal>.</para> |
|
|
|
<para>As of &kdesrc-build; 1.16, you can achieve this by using the <link |
|
linkend="conf-ignore-modules">ignore-modules</link> configuration option.</para> |
|
|
|
<example id="example-ignoring-a-module"> |
|
<title>Example for ignoring a kde-project module in a group</title> |
|
<programlisting> |
|
module-set <replaceable>utils</replaceable> |
|
<option><link linkend="conf-repository">repository</link></option> <literal>kde-projects</literal> |
|
|
|
# This option chooses what modules to look for in the database. |
|
<option><link linkend="conf-use-modules">use-modules</link></option> <replaceable>kdeutils</replaceable> |
|
|
|
# This option "subtracts out" modules from the modules chosen by use-modules, above. |
|
<option><link linkend="conf-ignore-modules">ignore-modules</link></option> <replaceable>kremotecontrol</replaceable> |
|
end module-set |
|
|
|
module-set <replaceable>graphics</replaceable> |
|
<option><link linkend="conf-repository">repository</link></option> <literal>kde-projects</literal> |
|
|
|
# This option chooses what modules to look for in the database. |
|
<option><link linkend="conf-use-modules">use-modules</link></option> <replaceable>extragear/graphics</replaceable> |
|
|
|
# This option "subtracts out" modules from the modules chosen by use-modules, above. |
|
# In this case, *both* extragear/graphics/kipi-plugins and |
|
# extragear/graphics/kipi-plugins/kipi-plugins-docs are ignored |
|
<option><link linkend="conf-ignore-modules">ignore-modules</link></option> <replaceable>extragear/graphics/kipi-plugins</replaceable> |
|
end module-set |
|
</programlisting> |
|
</example> |
|
|
|
</sect2> |
|
|
|
</sect1> |
|
|
|
<sect1 id="building-and-troubleshooting"> |
|
<title>Using the &kdesrc-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>%</prompt> <userinput><command>kdesrc-build</command></userinput> |
|
</screen> |
|
</para> |
|
|
|
<para>Afterwards, you should see output similar to that in <xref |
|
linkend="example-single-module"/>:</para> |
|
|
|
<example id="example-single-module"> |
|
<title>Example output of building a single module</title> |
|
<screen> |
|
<prompt>%</prompt> <userinput><command>kdesrc-build</command> <option>kdelibs</option></userinput> |
|
Script started processing at Wed Dec 22 13:21:45 2010 |
|
<<< Build Process >>> |
|
Building kdelibs (1/1) |
|
Waiting for source code update. |
|
Source update complete for kdelibs: 48 files affected. |
|
Checking for source conflicts... |
|
Compiling... |
|
Build succeeded after 13 minutes, and 6 seconds. |
|
Installing kdelibs. |
|
Overall time for kdelibs was 13 minutes, and 53 seconds. |
|
|
|
<<< Build Done >>> |
|
|
|
<<< PACKAGES SUCCESSFULLY BUILT >>> |
|
kdelibs |
|
|
|
Script finished processing at Wed Dec 22 13:35:38 2010 |
|
Your logs are saved in /home/kde-src/log-kdesrc-build/2010-12-22-01 |
|
</screen> |
|
</example> |
|
|
|
<para> |
|
At this point, &kdesrc-build; should start downloading the sources and |
|
compiling them. Depending on how many modules you are downloading, it is |
|
possible that &kdesrc-build; will not succeed the first time you compile &kde;. |
|
Do not despair! |
|
</para> |
|
|
|
<para>&kdesrc-build; logs the output of every command it runs. By default, |
|
the log files are kept in <filename class="directory">~/kdesrc/log</filename>. To see what |
|
the caused an error for a module in the last &kdesrc-build; command, usually |
|
it is sufficient to look at <filename class="directory">~/kdesrc/log/latest/<replaceable>module-name</replaceable>/error.log</filename>.</para> |
|
|
|
<tip><para>Perhaps the easiest way to find out what error caused a module to |
|
fail to build is to search backward with a case-insensitive search, starting |
|
from the end of the file looking for the word <literal>error</literal>. Once |
|
that is found, scroll up to make sure there are no other error messages nearby. |
|
The first error message in a group is usually the underlying |
|
problem.</para></tip> |
|
|
|
<para>In that file, you will see the error that caused the build to fail for |
|
that module. If the file says (at the bottom) that you are missing some |
|
packages, try installing the package (including any appropriate -dev packages) |
|
before trying to build that module again. Make sure that when you run |
|
&kdesrc-build; again to pass the <link |
|
linkend="cmdline-reconfigure">--reconfigure</link> option so that |
|
&kdesrc-build; forces the module to check for the missing packages |
|
again.</para> |
|
|
|
<para>Or, if the error appears to be a build error (such as a syntax error, |
|
<quote>incorrect prototype</quote>, <quote>unknown type</quote>, or similar) |
|
then it is probably an error with the &kde; source, which will hopefully be |
|
resolved within a few days. If it is not resolved within that time, feel free |
|
to mail the <email>kde-devel@kde.org</email> mailing list (subscription may be |
|
required first) in order to report the build failure.</para> |
|
|
|
<para>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://techbase.kde.org/Getting_Started/Build/KDE4"> |
|
Building &kde; 4 from Source</ulink>. |
|
</para> |
|
|
|
<para>On the other hand, assuming everything went well, you should have a new |
|
&kde; install on your computer, and now it is simply a matter of running |
|
it, described next in <xref linkend="environment"/>.</para> |
|
|
|
<note><para>For more information about &kdesrc-build;'s logging features, |
|
please see <xref linkend="kdesrc-build-logging"/>.</para></note> |
|
|
|
</sect1> |
|
|
|
<sect1 id="environment"> |
|
<title>Setting the Environment to Run Your &kde; &plasma; Desktop</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. You must change the environment |
|
variables of your login scripts to make sure the newly-built desktop is used. |
|
</para> |
|
|
|
<sect2 id="session-driver"> |
|
<title>Automatically installing a login driver</title> |
|
|
|
<para>Starting from version 1.16, &kdesrc-build; will try to install an |
|
appropriate login driver, that will allow you to login to your |
|
&kdesrc-build;-built &kde; desktop from your login manager. This can be |
|
disabled by using the <option><link |
|
linkend="conf-install-session-driver">install-session-driver</link></option> |
|
configuration file option.</para> |
|
|
|
<note><para>Session setup does not occur while &kdesrc-build; is running |
|
in pretend mode.</para></note> |
|
|
|
<para>This driver works by setting up a custom <quote><literal>xsession</literal></quote> |
|
session type. This type of session should work by default with the &kdm; login |
|
manager (where it appears as a <quote>Custom</quote> session), but other login |
|
managers (such as <application>LightDM</application> and |
|
<application>gdm</application>) may require additional files installed to |
|
enable <literal>xsession</literal> support.</para> |
|
|
|
<sect3 id="xsession-distribution-setup"> |
|
<title>Adding xsession support for distributions</title> |
|
|
|
<para>The default login managers for some distributions may require additional |
|
packages to be installed in order to support <literal>xsession</literal> logins.</para> |
|
|
|
<itemizedlist> |
|
<listitem><para>The <ulink url="http://fedoraproject.org/">Fedora</ulink> |
|
&Linux; distribution requires the <literal>xorg-x11-xinit-session</literal> |
|
package to be installed for custom <literal>xsession</literal> login |
|
support.</para></listitem> |
|
|
|
<listitem><para><ulink url="http://debian.org/">Debian</ulink> and |
|
Debian-derived &Linux; distributions should support custom |
|
<literal>xsession</literal> logins, but require the |
|
<option><userinput>allow-user-xsession</userinput></option> option to be set in |
|
<filename>/etc/X11/Xsession.options</filename>. See also the Debian <ulink |
|
url="http://www.debian.org/doc/manuals/debian-reference/ch07.en.html#_customizing_the_x_session_classic_method">documentation |
|
on customizing the X session.</ulink></para></listitem> |
|
|
|
<listitem><para>For other distributions, go to <xref |
|
linkend="xsession-manual-setup"/>.</para></listitem> |
|
</itemizedlist> |
|
|
|
</sect3> |
|
|
|
<sect3 id="xsession-manual-setup"> |
|
<title>Manually adding support for xsession</title> |
|
|
|
<para>If there were no distribution-specific directions for your distribution |
|
in <xref linkend="xsession-distribution-setup"/>, you can manually add a |
|
<quote>Custom xsession login</quote> entry to your distribution's list of |
|
session types as follows:</para> |
|
|
|
<procedure id="proc-adding-xsession-type"> |
|
<title>Adding an .xsession login session type.</title> |
|
|
|
<note><para>This procedure will likely require administrative privileges to |
|
complete. |
|
</para></note> |
|
|
|
<step performance="required"> |
|
<para>Create the file |
|
<filename>/usr/share/xsessions/kdesrc-build.desktop</filename>.</para> |
|
</step> |
|
|
|
<step performance="required"> |
|
<para>Ensure the file just created has the following text:</para> |
|
<literallayout><userinput> |
|
Type=XSession |
|
Exec=<co id="session-homedir"/><replaceable>$HOME</replaceable>/.xsession |
|
Name=KDE Plasma Desktop (unstable; kdesrc-build) |
|
</userinput></literallayout> |
|
|
|
<calloutlist> |
|
<callout arearefs="session-homedir"><para> |
|
The <replaceable>$HOME</replaceable> entry must be replaced by the full path to |
|
your home directory (example, <filename |
|
class="directory">/home/<replaceable>user</replaceable></filename>). The |
|
desktop entry specification does not allow for user-generic files. |
|
</para></callout> |
|
|
|
</calloutlist> |
|
</step> |
|
|
|
<step performance="optional"><para>When the login manager is restarted, it |
|
should show a new session type, <quote>KDE Plasma Desktop (unstable; |
|
kdesrc-build)</quote> in its list of sessions, which should try to run the |
|
<filename>.xsession</filename> file installed by &kdesrc-build; if it is |
|
selected when you login.</para> |
|
|
|
<note><para>It may be easiest to restart the computer to restart the login |
|
manager, if the login manager does not track updates to the <filename |
|
class="directory">/usr/share/xsessions</filename> directory.</para></note> |
|
|
|
</step> |
|
|
|
</procedure> |
|
|
|
</sect3> |
|
|
|
</sect2> |
|
|
|
<sect2 id="old-profile-instructions"> |
|
<title>Setting up the environment manually</title> |
|
<para>This documentation used to include instruction on which environment |
|
variables to set in order to load up the newly-built desktop. These |
|
instructions have been moved to an appendix (<xref |
|
linkend="old-profile-setup"/>).</para> |
|
|
|
<para>If you intend to setup your own login support you can consult that |
|
appendix or view the <filename>sample-kde-env-master.sh</filename> file |
|
included with the &kdesrc-build; source.</para> |
|
|
|
</sect2> |
|
|
|
</sect1> |
|
|
|
</chapter> |
|
|
|
<chapter id="features"> |
|
<title>Script Features</title> |
|
|
|
<sect1 id="features-overview"> |
|
<title>Feature Overview</title> |
|
|
|
<para> |
|
&kdesrc-build; features include: |
|
</para> |
|
|
|
<itemizedlist> |
|
|
|
<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 verbose description of the commands |
|
it is about to execute, without actually executing it. |
|
|
|
<tip><para>For an even more verbose description of what &kdesrc-build; is |
|
doing, try using the <option>--debug</option> option. |
|
</para></tip> |
|
|
|
</para></listitem> |
|
|
|
<listitem><para> |
|
&kdesrc-build; can (with the assistance of the &kde; FTP server) allow for |
|
speedy checkouts of |
|
some Subversion modules. If the module you are checking out has already been |
|
packaged at the website, then &kdesrc-build; will download the snapshot and |
|
prepare it for use on your computer. |
|
</para> |
|
|
|
<tip><para>There is generally no need for any special preparation to perform |
|
the initial checkout of a Git module, as the entire Git repository must be |
|
downloaded anyways, so it is easy for the server to determine what to |
|
send.</para></tip> |
|
|
|
<para>This is faster for you, and helps to ease the load on the kde.org |
|
anonymous &subversion; servers.</para> |
|
</listitem> |
|
|
|
<listitem><para> |
|
Another speedup is provided by starting the build process for a module as soon |
|
as the source code for that module has been downloaded. (Available since |
|
version 1.6) |
|
</para></listitem> |
|
|
|
<listitem><para> |
|
Excellent support for building the &Qt; library (in case the &kde; software you |
|
are trying to build depends on a recent &Qt; not available in your |
|
distribution). |
|
</para></listitem> |
|
|
|
<listitem><para> |
|
&kdesrc-build; does not require a <acronym>GUI</acronym> present to operate. So, |
|
you can build &kde; without needing an alternate graphical environment. |
|
</para></listitem> |
|
|
|
<listitem><para> |
|
Supports setting default options for all modules (such as the compilation |
|
settings or the configuration options). Such options can normally be changed |
|
for specific modules as well.</para> |
|
|
|
<para>Also, &kdesrc-build; will <link linkend="kdesrc-build-std-flags">add |
|
standard flags</link> as appropriate to save you the trouble and possible |
|
errors from typing them yourself. |
|
</para></listitem> |
|
|
|
<listitem><para> |
|
&kdesrc-build; can checkout a specific <link linkend="using-branches">branch |
|
or tag</link> of a module. You can also ensure that a specific <link |
|
linkend="conf-revision">revision</link> is checked out of a module. |
|
</para></listitem> |
|
|
|
<listitem><para> |
|
&kdesrc-build; can automatically switch a source directory to checkout from |
|
a different repository, branch, or tag. This happens automatically when you |
|
change an option that changes what the repository &url; should be, but you must |
|
use the <link linkend="cmdline-src-only">--src-only</link> option to let |
|
&kdesrc-build; know that it is acceptable to perform the switch. |
|
</para></listitem> |
|
|
|
<listitem><para> |
|
&kdesrc-build; can <link linkend="partial-builds">checkout only portions of a |
|
module</link>, for those situations where you only need one program from a |
|
large module. |
|
</para></listitem> |
|
|
|
<listitem><para> |
|
For developers: &kdesrc-build; will <link linkend="ssh-agent-reminder">remind |
|
you</link> if you use svn+ssh:// but <application>ssh-agent</application> is |
|
not running, as this will lead to repeated password requests from |
|
&ssh;. |
|
</para></listitem> |
|
|
|
<listitem><para> |
|
Can <link linkend="deleting-build-dir">delete the build directory</link> of a |
|
module after its installation to save space at the expense of future compilation |
|
time. |
|
</para></listitem> |
|
|
|
<listitem><para> |
|
The locations for the directories used by &kdesrc-build; are configurable (even |
|
per module). |
|
</para></listitem> |
|
|
|
<listitem><para> |
|
Can use &sudo;, or a different user-specified command |
|
to <link linkend="root-installation">install modules</link> so that |
|
&kdesrc-build; does not need to be run as the super user. |
|
</para></listitem> |
|
|
|
<listitem><para> |
|
&kdesrc-build; runs <link linkend="build-priority">with reduced priority</link> |
|
by default to allow you to still use your computer while &kdesrc-build; is |
|
working. |
|
</para></listitem> |
|
|
|
<listitem><para> |
|
Has support for using &kde;'s <link linkend="using-branches">tags and |
|
branches</link>. |
|
</para></listitem> |
|
|
|
<listitem><para> |
|
There is support for <link linkend="resuming">resuming a build</link> from a |
|
given module. You can even <link linkend="ignoring-modules">ignore some |
|
modules</link> temporarily for a given build. |
|
</para></listitem> |
|
|
|
<listitem><para> |
|
&kdesrc-build; will show the <link linkend="build-progress">progress of your |
|
build</link> when using &cmake;, and will always time the build |
|
process so you know after the fact how long it took. |
|
</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 source repositories. |
|
</para></listitem> |
|
|
|
<listitem><para> |
|
Tilde-expansion for your configuration options. For example, you can |
|
specify: |
|
<programlisting>qtdir ~/kdesrc/build/qt</programlisting> |
|
</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. |
|
</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> |
|
Forced full rebuilds, by running |
|
&kdesrc-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> |
|
You can check out only a portion of a &kde; &subversion; module. For example, |
|
you could check out only the <application>taglib</application> from |
|
<application>kdesupport</application>. |
|
</para></listitem> |
|
|
|
</itemizedlist> |
|
|
|
</sect1> |
|
|
|
<sect1 id="kdesrc-build-logging"> |
|
<title>&kdesrc-build;'s build logging</title> |
|
|
|
<sect2 id="logging-overview"> |
|
<title>Logging overview</title> |
|
|
|
<para>Logging is a &kdesrc-build; feature whereby the output from every command |
|
that &kdesrc-build; runs is saved to a file for examination later, if |
|
necessary. This is done because it is often necessary to have the output of |
|
these programs when there is a build failure, because there are so many |
|
reasons why a build can fail in the first place.</para> |
|
|
|
<sect3 id="log-directory-layout"> |
|
<title>Logging directory layout</title> |
|
|
|
<para>The logs are always stored under the log directory. The destination of |
|
the log directory is controlled by the <link linkend="conf-log-dir">log-dir</link> |
|
option, which defaults to <filename class="directory"><symbol>${source-dir}</symbol>/log</filename> (where |
|
<symbol>${source-dir}</symbol> is the value of the <link linkend="conf-source-dir">source-dir</link> |
|
option. The in rest of this section, this value will be referred to as |
|
<symbol>${log-dir}</symbol>).</para> |
|
|
|
<para>Under <symbol>${log-dir}</symbol>, is a set of directories, one for every |
|
time that &kdesrc-build; was run. Each directory is named with the date, and |
|
the run number. For instance, the second time that &kdesrc-build; is run on |
|
May 26, 2004, it would create a directory called <filename>2004-05-26-02</filename>, |
|
where the 2004-05-26 is for the date, and the -02 is the run number.</para> |
|
|
|
<para>For your convenience, &kdesrc-build; will also create a link to the |
|
logs for your latest run, called <filename class="directory">latest</filename>. So the logs for |
|
the most recent &kdesrc-build; run should always be under <filename class="directory"><symbol>${log-dir}</symbol>/latest</filename>. |
|
</para> |
|
|
|
<para>Now, each directory for a &kdesrc-build; run will itself contain a set of |
|
directories, one for every &kde; module that &kdesrc-build; tries to build. Also, |
|
a file called <filename>build-status</filename> will be contained in the directory, |
|
which will allow you to determine which modules built and which failed.</para> |
|
|
|
<note><para> |
|
If a module itself has a submodule (such as extragear/multimedia, |
|
playground/utils, or KDE/kdelibs), then there would actually be a matching |
|
layout in the log directory. For example, the logs for KDE/kdelibs after the |
|
last &kdesrc-build; run would be found in <filename class="directory"><symbol>${log-dir}</symbol>/latest/KDE/kdelibs</filename>, |
|
and not under <filename class="directory"><symbol>${log-dir}</symbol>/latest/kdelibs</filename>. |
|
</para></note> |
|
|
|
<para>In each module log directory, you will find a set of files for each |
|
operation that &kdesrc-build; performs. If &kdesrc-build; updates a module, |
|
you may see filenames such as <filename>svn-co.log</filename> (for a |
|
module checkout) or <filename>svn-up.log</filename> (when updating a module |
|
that has already been checked out). If the <command>configure</command> |
|
command was run, then you would expect to see a <filename>configure.log</filename> |
|
in that directory.</para> |
|
|
|
<para>If an error occurred, you should be able to see an explanation of why in |
|
one of the files. To help you determine which file contains the error, |
|
&kdesrc-build; will create a link from the file containing the error (such as |
|
<filename>build-1.log</filename> to a file called <filename>error.log</filename>).</para> |
|
|
|
<para>The upshot to all of this is that to see why a module failed to build |
|
after your last &kdesrc-build;, the file you should look at first is |
|
<filename><symbol>${log-dir}</symbol>/latest/<replaceable>module-name</replaceable>/error.log</filename>. |
|
</para> |
|
|
|
<tip><para>If the file <filename>error.log</filename> is empty (especially after |
|
an installation), then perhaps there was no error. Some of the tools used by |
|
the &kde; build system will sometimes mistakenly report an error when there was |
|
none.</para> |
|
|
|
<para>Also, some commands will evade &kdesrc-build;'s output redirection and |
|
bypass the log file in certain circumstances (normally when performing the |
|
first &subversion; checkout), and the error output in that case is not in the log file |
|
but is instead at the &konsole; or terminal where you ran &kdesrc-build;.</para> |
|
</tip> |
|
|
|
</sect3> |
|
</sect2> |
|
</sect1> |
|
|
|
</chapter> |
|
|
|
<chapter id="kdesrc-buildrc"> |
|
<title>Configuring &kdesrc-build;</title> |
|
|
|
<sect1 id="kdesrc-buildrc-overview"> |
|
<title>Overview of &kdesrc-build; configuration</title> |
|
|
|
<para> |
|
To use the script, you must have a file in your home directory called |
|
<filename>.kdesrc-buildrc</filename>, which describes the modules you would |
|
like to download and build, and any options or configuration parameters to |
|
use for these modules. |
|
</para> |
|
|
|
<sect2 id="kdesrc-buildrc-layout"> |
|
<title>Layout of the configuration file</title> |
|
|
|
<sect3 id="kdesrc-buildrc-layout-global"> |
|
<title>Global configuration</title> |
|
|
|
<para> |
|
The configuration file starts with the global options, specified like the |
|
following: |
|
</para> |
|
|
|
<programlisting> |
|
global |
|
<replaceable>option-name option-value</replaceable> |
|
<replaceable>[...]</replaceable> |
|
end global |
|
</programlisting> |
|
|
|
</sect3> |
|
<sect3 id="kdesrc-buildrc-layout-modules"> |
|
<title>Module configuration</title> |
|
|
|
<para> |
|
It is then followed by one or more module sections, specified in one of the |
|
following two forms: |
|
</para> |
|
|
|
<itemizedlist> |
|
<listitem> |
|
<programlisting> |
|
module <replaceable>module-name</replaceable> |
|
<replaceable>option-name option-value</replaceable> |
|
<replaceable>[...]</replaceable> |
|
end module |
|
</programlisting> |
|
</listitem> |
|
|
|
<listitem> |
|
<programlisting> |
|
module-set <replaceable>module-set-name</replaceable> |
|
repository <userinput>kde-projects</userinput> or <userinput><replaceable>git://host.org/path/to/repo.git</replaceable></userinput> |
|
use-modules <replaceable>module-names</replaceable> |
|
|
|
# Other options may also be set |
|
<replaceable>option-name option-value</replaceable> |
|
<replaceable>[...]</replaceable> |
|
end module-set |
|
</programlisting> |
|
</listitem> |
|
</itemizedlist> |
|
|
|
<important><para>Note that the second form, module sets, <emphasis>only works |
|
for Git-based modules</emphasis>.</para></important> |
|
|
|
<para> |
|
For Subversion modules, <replaceable>module-name</replaceable> must be a module |
|
from the &kde; &subversion; repository (for example, kdeartwork or |
|
kde-wallpapers), although it is possible to get around this if you |
|
<link linkend="conf-override-url">manually specify the &subversion; URL</link>. |
|
</para> |
|
|
|
<para> |
|
For Git modules, the module name can be essentially whatever you'd like, as |
|
long as it does not duplicate any other module name in the configuration. Keep |
|
in mind the source and build directory layout will be based on the module name |
|
if you do not use the <link linkend="conf-dest-dir">dest-dir</link> option. |
|
</para> |
|
|
|
<para>However, for Git <emphasis>module sets</emphasis> the |
|
<replaceable>module-names</replaceable> must correspond with actual git modules |
|
in the chosen <option>repository</option>. See <link |
|
linkend="conf-git-repository-base">git-repository-base</link> or <link |
|
linkend="conf-use-modules">use-modules</link> for more information. |
|
</para> |
|
|
|
</sect3> |
|
|
|
<sect3 id="kdesrc-buildrc-options-groups"> |
|
<title><quote>options</quote> modules</title> |
|
|
|
<para>There is a final type of configuration file entry, |
|
<literal>options</literal> groups, which may be given wherever a |
|
<literal>module</literal> or <literal>module-set</literal> may be used.</para> |
|
|
|
<programlisting> |
|
options <replaceable>module-name</replaceable> |
|
<replaceable>option-name option-value</replaceable> |
|
<replaceable>[...]</replaceable> |
|
end options |
|
</programlisting> |
|
|
|
<para>An <literal>options</literal> group may have options set for it just like |
|
a module declaration, and is associated with an existing module. Any options |
|
set these way will be used to <emphasis>override</emphasis> options set for the |
|
associated module.</para> |
|
|
|
<important><para>The associated module name <emphasis>must</emphasis> match the |
|
name given in the <literal>options</literal> declaration. Be careful of |
|
mis-typing the name.</para></important> |
|
|
|
<para>This is useful to allow for declaring an entire |
|
<literal>module-set</literal> worth of modules, all using the same options, and |
|
then using <literal>options</literal> groups to make individual changes.</para> |
|
|
|
<example id="ex-options-group"> |
|
<title>Example of using options</title> |
|
|
|
<para>In this example we choose to build all modules from the &kde; multimedia |
|
software grouping. However we want to use a different version of the &kmix; |
|
application (perhaps for testing a bug fix). It works as follows:</para> |
|
|
|
<programlisting> |
|
module-set <replaceable>kde-multimedia-set</replaceable> |
|
repository <userinput>kde-projects</userinput> |
|
use-modules <replaceable>kde/kdemultimedia</replaceable> |
|
branch <replaceable>master</replaceable> |
|
end module-set |
|
|
|
# kmix is a part of kde/kdemultimedia group, even though we never named |
|
# kmix earlier in this file, &kdesrc-build; will figure out the change. |
|
options <replaceable>kmix</replaceable> |
|
branch <replaceable>KDE/4.12</replaceable> |
|
end options |
|
</programlisting> |
|
|
|
<para>Now when you run &kdesrc-build;, all of the &kde; multimedia programs will |
|
be built from the <quote>master</quote> branch of the source repository, but |
|
&kmix; will be built from the older <quote>KDE/4.12</quote> branch. By using |
|
<literal>options</literal> you didn't have to individually list all the |
|
<emphasis>other</emphasis> &kde; multimedia programs to give them the right |
|
branch option.</para> |
|
|
|
</example> |
|
|
|
<note> |
|
<para>Note that this feature is only available in &kdesrc-build; from version |
|
1.16, or using the development version of &kdesrc-build; after |
|
2014-01-12.</para></note> |
|
|
|
</sect3> |
|
|
|
</sect2> |
|
|
|
<sect2 id="kdesrc-buildrc-including"> |
|
<title>Including other configuration files</title> |
|
|
|
<para> |
|
Within the configuration file, you may reference other files by using the |
|
<literal>include</literal> keyword with a file, which will act as if the file |
|
referenced had been inserted into the configuration file at that point. |
|
</para> |
|
|
|
<informalexample><para>For example, you could have something like this:</para> |
|
<programlisting> |
|
global |
|
include <replaceable>~/common-kdesrc-build-options</replaceable> |
|
|
|
# Insert specific options here. |
|
|
|
end global |
|
</programlisting> |
|
</informalexample> |
|
|
|
<note><para>If you don't specify the full path to the file to include, then |
|
the file will be searched for starting from the directory containing the source |
|
file. This works recursively as well.</para></note> |
|
|
|
</sect2> |
|
|
|
<sect2 id="kdesrc-buildrc-common"> |
|
<title>Commonly used configuration options</title> |
|
|
|
<para> |
|
The following is a list of commonly-used options. Click on the |
|
option to find out more about it. To see the full list of options, see |
|
<xref linkend="conf-options-table"/>. |
|
</para> |
|
|
|
<itemizedlist> |
|
<listitem><para><link linkend="conf-cmake-options">cmake-options</link> to define what flags to configure a module with using &cmake;.</para></listitem> |
|
<listitem><para><link linkend="conf-branch">branch</link>, to checkout from a branch instead of /trunk (for &subversion;) or <literal>master</literal> (for Git).</para></listitem> |
|
<listitem><para><link linkend="conf-configure-flags">configure-flags</link> to define what flags to configure &Qt; with.</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-make-options">make-options</link>, to pass options to the &make; program (such as number of CPUs to use).</para></listitem> |
|
<listitem><para><link linkend="conf-qtdir">qtdir</link>, to set the path to &Qt;.</para></listitem> |
|
<listitem><para><link linkend="conf-source-dir">source-dir</link>, to change where to download the source code to.</para></listitem> |
|
</itemizedlist> |
|
|
|
</sect2> |
|
</sect1> |
|
<sect1 id="conf-options-table"> |
|
<title>Table of available configuration options</title> |
|
|
|
<para>Here is a table of the various options, containing the following |
|
information:</para> |
|
|
|
<itemizedlist> |
|
|
|
<listitem><para>The option name</para></listitem> |
|
|
|
<listitem><para>A description of how &kdesrc-build; responds if the option is |
|
set in both the global section, and the module section of the <link |
|
linkend="configure-data">configuration file</link> while building a |
|
module.</para></listitem> |
|
|
|
<listitem><para>Special comments on the purpose and usage of the |
|
option.</para></listitem> |
|
|
|
</itemizedlist> |
|
|
|
<table id="option-table"> |
|
<title>Table of Options</title> |
|
<tgroup cols="3"> |
|
|
|
<thead> |
|
<row> |
|
<entry>Option-name</entry> |
|
<entry>Module -> Global Behavior</entry> |
|
<entry>Notes</entry> |
|
</row> |
|
</thead> |
|
|
|
<tbody> |
|
|
|
<row> |
|
<entry>apidox</entry> |
|
<entry></entry> |
|
<entry><para>This option was used to allow for building KDE module API documentation. |
|
It was removed in &kdesrc-build; 1.6.3 due to it not being supported in KDE 4. Online |
|
API documentation is available from <ulink url="http://api.kde.org/">kde.org</ulink>. |
|
In addition it is possible to build KDE 4's API documentation using a script included in |
|
the kdesdk module (/scripts directory). See <ulink url="http://techbase.kde.org/Development/Tools/apidox">KDE |
|
TechBase</ulink> for more details. It is still possible to manually build API documentation |
|
for older modules of course.</para> |
|
</entry> |
|
</row> |
|
|
|
<row> |
|
<entry>apply-qt-patches</entry> |
|
<entry></entry> |
|
<entry>This option was removed in kdesrc-build 1.10. To get the same effect, |
|
see <xref linkend="using-qt" /> and the <link |
|
linkend="conf-repository">repository</link> option.</entry> |
|
</row> |
|
|
|
<row id="conf-async"> |
|
<entry>async</entry> |
|
<entry>Cannot be overridden</entry> |
|
<entry><para>This option enables the asynchronous mode of operation, where the source |
|
code update and the build process will be performed in parallel, instead of waiting for |
|
all of the source code updates before starting the build process. This option defaults |
|
to enabling asynchronous mode. To disable, set this option to <userinput>false</userinput></para> |
|
<para>This option is available since the 1.6 release.</para></entry> |
|
</row> |
|
|
|
<row id="conf-binpath"> |
|
<entry>binpath</entry> |
|
<entry>Module setting overrides global</entry> |
|
<entry><para>Set this option to set the environment variable PATH while building. |
|
You cannot override this setting in a module option. The default value is |
|
the $<envar>PATH</envar> that is set when the script starts. This environment |
|
variable should include the colon-separated paths of your development |
|
toolchain. The paths <filename class="directory">$<envar>KDEDIR</envar>/bin</filename> and |
|
<filename class="directory">$<envar>QTDIR</envar>/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>Module setting overrides global</entry> |
|
<entry><para>Set this option to checkout from a branch of &kde; instead of the |
|
default of <replaceable>master</replaceable> (for &git; modules) or |
|
<replaceable>trunk</replaceable> (for &subversion;), where &kde; development |
|
occurs.</para> |
|
|
|
<para> |
|
For instance, to checkout &kde; 4.6 branch, you would set this option to |
|
<replaceable>4.6</replaceable>.</para> |
|
|
|
<para>If &kdesrc-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-module-base-path">module-base-path</link> or <link |
|
linkend="conf-override-url">override-url</link> options.</para> |
|
|
|
<note><para>For most &kde; modules you probably wish to use the <link |
|
linkend="conf-branch-group">branch-group</link> option instead and use this |
|
option for case-by-case exceptions.</para></note> |
|
|
|
</entry> |
|
</row> |
|
|
|
<row id="conf-branch-group"> |
|
<entry>branch-group</entry> |
|
<entry>Module setting overrides global</entry> |
|
<entry> |
|
|
|
<para>Set this option to a general group from which you want modules to be |
|
chosen.</para> |
|
|
|
<para>For supported &git; module types, &kdesrc-build; will determine the |
|
actual branch to use automatically based on rules encoded by the &kde; |
|
developers (these rules may be viewed in the |
|
<literal>kde-build-metadata</literal> source repository in your source |
|
directory). After a branch is determined that branch is used as if you had |
|
specified it yourself using the <link linkend="conf-branch">branch</link> |
|
option. |
|
</para> |
|
|
|
<para>This is useful if you're just trying to maintain up-to-date on some |
|
normal development track without having to pay attention to all the branch name |
|
changes.</para> |
|
|
|
<para>The current branch groups (as of 2013-08-11) are:</para> |
|
|
|
<itemizedlist> |
|
|
|
<listitem><para><literal>stable-qt4</literal>, for tracking bugfixes to the |
|
&Qt; 4-based &kde; libraries and applications.</para></listitem> |
|
|
|
<listitem><para><literal>latest-qt4</literal>, for tracking development and new |
|
features for the &Qt; 4-based &kde; libraries and |
|
applications.</para></listitem> |
|
|
|
<listitem><para><literal>kf5-qt5</literal>, for tracking |
|
<quote>bleeding-edge</quote> development for the upcoming &Qt; 5-based &kde; |
|
Frameworks 5, &plasma; Workspace 2, &etc;</para></listitem> |
|
|
|
</itemizedlist> |
|
|
|
<para>Note that if you <emphasis>do</emphasis> choose a |
|
<literal>branch</literal> yourself, that it will override this setting. The |
|
same is true of other specific branch selection options such as <link |
|
linkend="conf-tag">tag</link>.</para> |
|
|
|
<para>This option was added in &kdesrc-build; 1.16-pre2.</para> |
|
|
|
<note><para>This option only applies to <literal>kde-projects</literal> &git; |
|
modules (the common case). See also <xref |
|
linkend="kde-projects-module-sets"/>. |
|
</para></note> |
|
|
|
</entry> |
|
</row> |
|
|
|
<row id="conf-build-dir"> |
|
<entry>build-dir</entry> |
|
<entry>Module setting overrides global</entry> |
|
<entry>Use this option to change the directory to contain the built sources. There |
|
are three different ways to use it: |
|
|
|
<orderedlist> |
|
|
|
<listitem><para>Relative to the &kde; &subversion; source directory (see <link |
|
linkend="conf-source-dir">the source-dir option</link>). This is the default, |
|
and is selected if you type a directory name that does not 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> |
|
|
|
</orderedlist> |
|
|
|
Perhaps surprisingly, this option can be changed per module. |
|
|
|
</entry> |
|
</row> |
|
|
|
<row id="conf-build-when-unchanged"> |
|
<entry>build-when-unchanged</entry> |
|
<entry>Module setting overrides global</entry> |
|
<entry><para>Use this option in order to control whether &kdesrc-build; always |
|
tries to build a module that has not had any source code updates.</para> |
|
|
|
<para>By setting <option>build-when-unchanged</option> to |
|
<userinput>true</userinput>, &kdesrc-build; always attempts the build phase |
|
for a module, even if the module did not have any source code updates. This is |
|
the default setting since it is more likely to lead to a correct |
|
build.</para> |
|
|
|
<para>By setting <option>build-when-unchanged</option> to |
|
<userinput>false</userinput>, &kdesrc-build; will only attempt to run the |
|
build phase for a module if the module has a source code update, or in other |
|
situations where it is likely that a rebuild is actually required. This can save |
|
time, especially if you run &kdesrc-build; daily, or more frequently.</para> |
|
|
|
<important><para>This feature is provided as an optimization only. Like many |
|
other optimizations, there are trade-offs for the correctness of your |
|
installation. For instance, changes to the qt or kdelibs modules may cause |
|
a rebuild of other modules to be necessary, even if the source code doesn't |
|
change at all.</para></important> |
|
</entry> |
|
</row> |
|
|
|
<row id="conf-checkout-only"> |
|
<entry>checkout-only</entry> |
|
<entry>Module setting overrides global</entry> |
|
<entry><para>Set this option to checkout &subversion; sources piece by piece. The |
|
value for this option should be a space-separated list of directories to |
|
checkout. Although this option overrides the global option, be aware that |
|
setting this as a global option makes no sense. |
|
</para> |
|
|
|
<para>Note that this setting has no effect on &git; modules due to the |
|
operation of the &git; source control system.</para> |
|
|
|
<para>See <xref linkend="checking-out-parts"/> for an example.</para></entry> |
|
</row> |
|
|
|
<row id="conf-cmake-options"> |
|
<entry>cmake-options</entry> |
|
<entry>Appends to global options (not applicable to qt)</entry> |
|
<entry><para>Use this option to specify what flags to pass to &cmake; 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. When used as a module |
|
option, it is added to the end of the global options. This allows you to |
|
specify common &cmake; options in the global section.</para> |
|
|
|
<para>This option does not apply to qt (which does not use &cmake;). Use |
|
<link linkend="conf-configure-flags">configure-flags</link> instead.</para> |
|
|
|
<para>Since these options are passed directly to the &cmake; command line, they |
|
should be given as they would be typed into &cmake;. For example:</para> |
|
|
|
<screen> cmake-options -DCMAKE_BUILD_TYPE=RelWithDebInfo |
|
</screen> |
|
|
|
<para>Since this is a hassle, &kdesrc-build; takes pains to ensure that as long |
|
as the rest of the options are set correctly, you should be able to leave this |
|
option blank. (In other words, <emphasis>required</emphasis> &cmake; parameters |
|
are set for you automatically)</para></entry> |
|
</row> |
|
|
|
<row id="conf-colorful-output"> |
|
<entry>colorful-output</entry> |
|
<entry>Cannot be overridden</entry> |
|
<entry>Set this option to <userinput>false</userinput> to disable the colorful output of &kdesrc-build;. |
|
This option defaults to <replaceable>true</replaceable>. Note that &kdesrc-build; will not output the |
|
color codes to anything but a terminal (such as xterm, &konsole;, or the normal |
|
&Linux; console). |
|
</entry> |
|
</row> |
|
|
|
<row id="conf-configure-flags"> |
|
<entry>configure-flags</entry> |
|
<entry>Module setting overrides global</entry> |
|
<entry><para>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. <emphasis>This option |
|
only works for qt.</emphasis></para> |
|
|
|
<para>To change configuration settings for KDE 4 modules, see |
|
<link linkend="conf-cmake-options">cmake-options</link>. |
|
</para> |
|
</entry> |
|
</row> |
|
|
|
<row id="conf-custom-build-command"> |
|
<entry>custom-build-command</entry> |
|
<entry>Module setting overrides global</entry> |
|
<entry> |
|
<para>This option can be set to run a different command (other than |
|
<command>make</command>, for example) in order to perform the build |
|
process. &kdesrc-build; should in general do the right thing, so you |
|
should not need to set this option. However it can be useful to use |
|
alternate build systems. |
|
</para> |
|
|
|
<para>The value of this option is used as the command line to run, modified |
|
by the <link linkend="conf-make-options">make-options</link> option as |
|
normal. |
|
</para> |
|
</entry> |
|
</row> |
|
|
|
<row id="conf-cxxflags"> |
|
<entry>cxxflags</entry> |
|
<entry>Appends to global option</entry> |
|
<entry><para>Use this option to specify what flags to use for building the |
|
module. This option is |
|
specified here instead of with <link |
|
linkend="conf-configure-flags">configure-flags</link> or <link |
|
linkend="conf-cmake-options">cmake-options</link> because this option will also |
|
set the environment variable <envar>CXXFLAGS</envar> during the build process.</para> |
|
|
|
<para>Note that for &kde; 4 and any other modules that use &cmake;, it is |
|
necessary to set the CMAKE_BUILD_TYPE option to <userinput>none</userinput> |
|
when configuring the module. This can be done using the <link |
|
linkend="conf-cmake-options">cmake-options</link> option. |
|
</para> |
|
</entry> |
|
</row> |
|
|
|
<row id="conf-dest-dir"> |
|
<entry>dest-dir</entry> |
|
<entry>Module setting 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. Note that although this changes the |
|
name of the module on disk, it is not a good idea to include directories |
|
or directory separators in the name as this will interfere with any |
|
<link linkend="conf-build-dir">build-dir</link> or |
|
<link linkend="conf-source-dir">source-dir</link> options. |
|
</entry> |
|
</row> |
|
|
|
<row id="conf-disable-agent-check"> |
|
<entry>disable-agent-check</entry> |
|
<entry>Cannot be overridden</entry> |
|
<entry>Normally if you are using &ssh; to download the &subversion; sources |
|
(such as if you are using the svn+ssh protocol), &kdesrc-build; will try and |
|
make sure that if you are using ssh-agent, it is actually managing some &ssh; |
|
identities. This is to try and prevent &ssh; from asking for your pass phrase |
|
for every module. You can disable this check by setting |
|
<option>disable-agent-check</option> to <userinput>true</userinput>. |
|
</entry> |
|
</row> |
|
|
|
<row id="conf-do-not-compile"> |
|
<entry>do-not-compile</entry> |
|
<entry>Module setting overrides global</entry> |
|
<entry><para>Use this option to select a specific set of directories not to be built in a |
|
module (instead of all of them). The directories not to build 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> |
|
|
|
<para>For example, to hold &juk; and &kscd; in the kdemultimedia module from |
|
compiling, you would add "do-not-compile juk kscd" to your kdemultimedia |
|
settings.</para> |
|
|
|
<para>See <xref linkend="not-compiling"/> for an example.</para> |
|
</entry> |
|
</row> |
|
|
|
<row id="conf-email-address"> |
|
<entry>email-address</entry> |
|
<entry>Cannot be overridden</entry> |
|
<entry> |
|
<para>This option was removed in &kdesrc-build; 1.14. |
|
</para> |
|
</entry> |
|
</row> |
|
|
|
<row id="conf-email-on-compile-error"> |
|
<entry>email-on-compile-error</entry> |
|
<entry>Cannot be overridden</entry> |
|
<entry> |
|
<para>This option was removed in &kdesrc-build; 1.14. |
|
</para> |
|
</entry> |
|
</row> |
|
|
|
<row> |
|
<entry>inst-apps</entry> |
|
<entry></entry> |
|
<entry> |
|
This option was removed in version 1.10 |
|
</entry> |
|
</row> |
|
|
|
<row id="conf-git-desired-protocol"> |
|
<entry>git-desired-protocol</entry> |
|
<entry>Cannot be overridden</entry> |
|
<entry><para>This option only applies to modules from a <link |
|
linkend="kde-projects-module-sets">&kde; project</link> repository.</para> |
|
|
|
<para>What this option actually does is configure which network protocol to |
|
prefer when updating source code for these modules. Normally the very-efficient |
|
<literal>git</literal> protocol is used, but this may be blocked in some |
|
networks (e.g. corporate intranets, public Wi-Fi). An alternative protocol |
|
which is much better supported is the <literal>HTTP</literal> protocol used for |
|
Internet web sites.</para> |
|
|
|
<para>If you are using one of these constrained networks you can set this |
|
option to <userinput>http</userinput> to prefer <literal>HTTP</literal> |
|
communications instead.</para> |
|
|
|
<tip><para>You may also need the <link |
|
linkend="conf-http-proxy">http-proxy</link> option if an HTTP proxy is also |
|
needed for network traffic.</para></tip> |
|
|
|
<para>In any other situation you should not set this option as the default |
|
protocol is most efficient.</para> |
|
|
|
<para>This option was added in &kdesrc-build; 1.16.</para> |
|
</entry> |
|
</row> |
|
|
|
<row id="conf-git-repository-base"> |
|
<entry>git-repository-base</entry> |
|
<entry>Cannot be overridden</entry> |
|
<entry><para>This option, added in version 1.12.1, is used to create a short |
|
name to reference a specific Git repository base URL in later <link |
|
linkend="module-sets">module set</link> declarations, which is useful for |
|
quickly declaring many Git modules to build.</para> |
|
|
|
<para>You must specify two things (separated by a space): The name to assign |
|
to the base URL, and the actual base URL itself. For example:</para> |
|
|
|
<para> |
|
<informalexample> |
|
<programlisting> |
|
global |
|
# other options |
|
|
|
# This is the common path to all anonymous Git server modules. |
|
git-repository-base <replaceable>kde-git</replaceable> <replaceable>kde:</replaceable> |
|
end global |
|
|
|
# Module declarations |
|
|
|
module-set |
|
# Now you can use the alias you defined earlier, but <emphasis>only</emphasis> |
|
# in a module-set. |
|
repository <replaceable>kde-git</replaceable> |
|
|
|
<link linkend="conf-use-modules">use-modules</link> <replaceable>module1.git</replaceable> <replaceable>module2.git</replaceable> |
|
end module-set |
|
</programlisting> |
|
</informalexample> |
|
</para> |
|
|
|
<para>The module-set's <literal>use-modules</literal> option created two modules |
|
internally, with &kdesrc-build; behaving as if it had read:</para> |
|
|
|
<programlisting> |
|
module module1 |
|
repository kde:<replaceable>module1.git</replaceable> |
|
end module |
|
|
|
module module2 |
|
repository kde:<replaceable>module2.git</replaceable> |
|
end module |
|
</programlisting> |
|
|
|
<para>The <literal>kde:</literal> &git; repository prefix used above is a |
|
shortcut which will be setup by &kdesrc-build; automatically. See the TechBase |
|
<ulink |
|
url="http://techbase.kde.org/Development/Git/Configuration#URL_Renaming">URL |
|
Renaming</ulink> article for more information. Note that unlike most other |
|
options, this option can be specified multiple times in order to create as |
|
many aliases as necessary.</para> |
|
|
|
<tip><para>It is not required to use this option to take advantage of module-set, |
|
this option exists to make it easy to use the same repository across many |
|
different module sets.</para></tip> |
|
</entry> |
|
</row> |
|
|
|
<row id="conf-http-proxy"> |
|
<entry>http-proxy</entry> |
|
<entry>Module setting overrides global</entry> |
|
|
|
<entry><para>This option, if set, uses the specified URL as a proxy server to use for |
|
any HTTP network communications (for example, when downloading snapshots for |
|
new modules, or the <link linkend="kde-projects-module-sets">KDE project |
|
database</link>).</para> |
|
|
|
<para>In addition, &kdesrc-build; will try to ensure that the tools it depends |
|
on also use that proxy server, if possible, by setting the |
|
<envar>http_proxy</envar> environment variable to the indicated server, |
|
<emphasis>if that environment variable is not already set</emphasis>.</para> |
|
|
|
<para>This option was introduced with &kdesrc-build; 1.16.</para> |
|
</entry> |
|
</row> |
|
|
|
<row id="ignore-kde-structure"> |
|
<entry>ignore-kde-structure</entry> |
|
<entry>Module setting overrides global</entry> |
|
<entry><para>This option is used to store the source and the build files directly |
|
in the name of the module. For example, |
|
<literal>source/extragear/network/telepathy/ktp-text-ui</literal> |
|
becomes |
|
<literal>source/ktp-text-ui</literal>. |
|
This option is disabled by default. If you want to enable this option you need to set it |
|
to <userinput>true</userinput>.</para> |
|
|
|
<para>This option was introduced with &kdesrc-build; 1.16.</para> |
|
</entry> |
|
</row> |
|
|
|
<row id="conf-ignore-modules"> |
|
<entry>ignore-modules</entry> |
|
<entry>Can't be overridden</entry> |
|
<entry><para>Modules named by this option, which would be chosen by &kdesrc-build; |
|
due to a <link linkend="conf-use-modules">use-modules</link> option, are |
|
instead skipped entirely. Use this option when you want to build an entire |
|
<link linkend="kde-projects-module-sets">kde-projects</link> project grouping |
|
<emphasis>except for</emphasis> some specific modules.</para> |
|
|
|
<para>The option value does not necessarily have to name the module directly. |
|
Any module that has full consecutive parts of its <link |
|
linkend="kde-projects-module-sets">&kde; projects module path</link> match one |
|
of the option values will be ignored, so you can ignore multiple modules this |
|
way.</para> |
|
|
|
<para>For example, an option value of <replaceable>libs</replaceable> would |
|
result in both <symbol>kde/kdegraphics/libs</symbol> and |
|
<symbol>playground/libs</symbol> being excluded (though not |
|
<symbol>kde/kdelibs</symbol> since the full part <quote>kdelibs</quote> is what |
|
is compared).</para> |
|
|
|
<tip><para>See also <xref linkend="example-ignoring-a-module"/>.</para></tip> |
|
|
|
<para>This option was introduced with &kdesrc-build; 1.16.</para> |
|
</entry> |
|
</row> |
|
|
|
<row id="conf-install-after-build"> |
|
<entry>install-after-build</entry> |
|
<entry>Module setting 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 <userinput>false</userinput> in the <link |
|
linkend="configure-data">configuration file</link>. You can also use the <link |
|
linkend="cmdline-no-install"><option>--no-install</option></link> command line |
|
flag. |
|
</entry> |
|
</row> |
|
|
|
<row id="conf-install-session-driver"> |
|
<entry>install-session-driver</entry> |
|
<entry>Cannot be overridden</entry> |
|
<entry><para>By default, &kdesrc-build; will try to install a driver for the graphical |
|
login manager that allows you to login to your &kdesrc-build;-built &kde; desktop.</para> |
|
|
|
<para>This driver will alter the following files:</para> |
|
|
|
<itemizedlist> |
|
<listitem><para><filename>~/.xsession</filename> (normally found at <filename>~/.config/kde-env-master.sh</filename>).</para></listitem> |
|
<listitem><para><filename>$XDG_CONFIG_HOME/kde-env-master.sh</filename> (normally found at <filename>~/.config/kde-env-master.sh</filename>).</para></listitem> |
|
<listitem><para><filename>$XDG_CONFIG_HOME/kde-env-user.sh</filename> (normally found at <filename>~/.config/kde-env-user.sh</filename>).</para></listitem> |
|
</itemizedlist> |
|
|
|
<para>If you maintain your own login driver then you can disable this feature by setting this |
|
option to <replaceable>false</replaceable>.</para> |
|
|
|
<para>This option was introduced with &kdesrc-build; 1.16.</para> |
|
|
|
<tip><para>&kdesrc-build; will not overwrite your existing files (if present) |
|
unless you also pass the <option><link |
|
linkend="cmdline-delete-my-settings">--delete-my-settings</link></option> |
|
command-line option.</para></tip> |
|
</entry> |
|
</row> |
|
|
|
<row id="conf-kdedir"> |
|
<entry>kdedir</entry> |
|
<entry>Module setting overrides global</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-kde-languages"> |
|
<entry>kde-languages</entry> |
|
<entry>Cannot be overridden</entry> |
|
<entry><para>This option allows you to choose to download and install |
|
localization packages along with &kde;. You might do this if you do not live in |
|
the United States and would like to use &kde; translated into your native |
|
language.</para> |
|
|
|
<para>To use this option, set it to a space-separated list of languages to |
|
install. Each language has a language code associated with it, which you |
|
can look up at this page: <ulink |
|
url="http://i18n.kde.org/teams/">http://i18n.kde.org/teams/</ulink>. |
|
</para> |
|
|
|
<para>It is alright to choose only one language. By default, none are |
|
downloaded, which means &kde; will display in American English.</para> |
|
|
|
<para>For instance, to choose to install French, you would set the option to |
|
something like: <userinput><option>kde-languages</option> |
|
<replaceable>fr</replaceable></userinput>. You would still need to use |
|
&systemsettings; in order to choose the French language, however.</para> |
|
</entry> |
|
</row> |
|
|
|
<row id="conf-libpath"> |
|
<entry>libpath</entry> |
|
<entry>Module setting overrides global</entry> |
|
<entry>Set this option to set the environment variable |
|
<envar>LD_LIBRARY_PATH</envar> while building. You cannot override this setting |
|
in a module option. The default value is blank, but the paths <filename |
|
class="directory">$<envar>KDEDIR</envar>/lib</filename> and <filename |
|
class="directory">$<envar>QTDIR</envar>/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>Module setting overrides global</entry> |
|
<entry>Use this option to change the directory used to hold the log files |
|
generated by the script. |
|
</entry> |
|
</row> |
|
|
|
<row id="conf-make-install-prefix"> |
|
<entry>make-install-prefix</entry> |
|
<entry>Module setting overrides global</entry> |
|
<entry>Set this variable to a space-separated list, which is interpreted as a |
|
command and its options to precede the <userinput><command>make</command> <option>install</option></userinput> 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>Module setting overrides global</entry> |
|
<entry>Set this variable in order to pass command line options to the |
|
<command>make</command> command. This is useful for programs such as <ulink |
|
url="http://distcc.samba.org/"><application>distcc</application></ulink> or |
|
systems with more than one processor core. |
|
</entry> |
|
</row> |
|
|
|
<row id="conf-manual-build"> |
|
<entry>manual-build</entry> |
|
<entry>Module setting overrides global</entry> |
|
<entry>Set the option value to <userinput>true</userinput> to keep the |
|
build process from attempting to build this module. It will still be kept |
|
up-to-date when updating from &subversion;. 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>Module setting overrides global</entry> |
|
<entry>Set the option value to <userinput>true</userinput> 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 essentially |
|
commented it out. |
|
</entry> |
|
</row> |
|
|
|
<row id="conf-module-base-path"> |
|
<entry>module-base-path</entry> |
|
<entry>Module setting overrides global</entry> |
|
<entry><para>Set this option to override &kdesrc-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 &kdesrc-build; constructs the final path according to the |
|
following template: |
|
<filename class="directory"><varname>$svn-server</varname>/home/kde/<varname>$module-base-path</varname></filename>. |
|
</para> |
|
|
|
<para>The default value is either <filename |
|
class="directory">trunk/<varname>$module</varname></filename> or <filename |
|
class="directory">trunk/KDE/<varname>$module</varname></filename>, depending on |
|
the module name.</para> |
|
|
|
<tip><para>Use the <link linkend="conf-branch">branch</link> or <link |
|
linkend="conf-tag">tag</link> options instead whenever they are applicable. |
|
</para></tip> |
|
</entry> |
|
</row> |
|
|
|
<row id="conf-niceness"> |
|
<entry>niceness</entry> |
|
<entry>Cannot be overridden</entry> |
|
<entry>Set this option to a number between 20 and 0. The higher the number, the |
|
lower a priority &kdesrc-build; will set for itself, i.e. the higher the |
|
number, the "nicer" the program is. The default is 10. |
|
</entry> |
|
</row> |
|
|
|
<row id="conf-no-svn"> |
|
<entry>no-svn</entry> |
|
<entry>Module setting overrides global</entry> |
|
<entry>If this option is set to true then &kdesrc-build; will not update the |
|
source code for the module automatically. It will still try to build the |
|
module if it normally would have tried anyways.</entry> |
|
</row> |
|
|
|
<row> |
|
<entry>no-rebuild-on-fail</entry> |
|
<entry></entry> |
|
<entry>This option was removed in version 1.10, since this behavior no longer helps |
|
due to fixes in the underlying build system.</entry> |
|
</row> |
|
|
|
<row id="conf-override-build-system"> |
|
<entry>override-build-system</entry> |
|
<entry>Module setting overrides global</entry> |
|
<entry><para>This is an advanced option, added in &kdesrc-build; 1.16.</para> |
|
|
|
<para>Normally &kdesrc-build; will detect the appropriate build system to use |
|
for a module after it is downloaded. This is done by checking for the existence |
|
of specific files in the module's source directory.</para> |
|
|
|
<para>Some modules may include more than one required set of files, which could confuse |
|
the auto-detection. In this case you can manually specify the correct build type.</para> |
|
|
|
<para>Currently supported build types that can be set are:</para> |
|
|
|
<variablelist> |
|
<varlistentry> |
|
<term>KDE</term> |
|
<listitem><para>Used to build &kde; modules. In reality it can be used to build |
|
almost any module that uses &cmake; but it is best not to rely on this.</para></listitem> |
|
</varlistentry> |
|
<varlistentry> |
|
<term>Qt</term> |
|
<listitem><para>Used to build the &Qt; library itself.</para></listitem> |
|
</varlistentry> |
|
<varlistentry> |
|
<term>qmake</term> |
|
<listitem><para>Used to build &Qt; modules that use |
|
<application>qmake</application>-style <literal>.pro</literal> |
|
files.</para></listitem> |
|
</varlistentry> |
|
<varlistentry> |
|
<term>generic</term> |
|
<listitem><para>Used to build modules that use plain Makefiles and that do not |
|
require any special configuration.</para></listitem> |
|
</varlistentry> |
|
<varlistentry> |
|
<term>autotools</term> |
|
<listitem><para>This is the standard configuration tool used for most Free and |
|
open-source software not in any of the other categories.</para></listitem> |
|
</varlistentry> |
|
</variablelist> |
|
|
|
</entry> |
|
</row> |
|
|
|
<row id="conf-override-url"> |
|
<entry>override-url</entry> |
|
<entry>Module setting overrides global</entry> |
|
<entry>If you set this option, &kdesrc-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 &kdesrc-build; |
|
cannot figure out what you mean using <link linkend="conf-branch">branch</link>. |
|
</entry> |
|
</row> |
|
|
|
<row id="conf-persistent-data-file"> |
|
<entry>persistent-data-file</entry> |
|
<entry>Cannot be overridden</entry> |
|
<entry><para>Use this option to change where &kdesrc-build; stores its persistent |
|
data. The default is to store this data in a file called |
|
<filename>.kdesrc-build-data</filename> placed in the same directory as the |
|
configuration file in use. If you have multiple available configurations in the |
|
same directory you may want to manually set this option so that the different |
|
configurations do not end up with conflicting persistent data.</para> |
|
|
|
<para>This option was added with &kdesrc-build; 1.15.</para> |
|
</entry> |
|
</row> |
|
|
|
<row id="conf-prefix"> |
|
<entry>prefix</entry> |
|
<entry>Module setting overrides global</entry> |
|
<entry><para>This option controls where to install the module (normally the |
|
<option><link linkend="conf-kdedir">kdedir</link></option> setting is used). |
|
Using this option allows you to install a module to a different directory than |
|
where the KDE Platform libraries are installed, such as if you were using |
|
&kdesrc-build; only to build applications.</para> |
|
<para>You can use <varname>${MODULE}</varname> or <varname>$MODULE</varname> |
|
in the path to have them expanded to the module's name.</para> |
|
</entry> |
|
</row> |
|
|
|
<row id="conf-purge-old-logs"> |
|
<entry>purge-old-logs</entry> |
|
<entry>Module setting overrides global</entry> |
|
<entry><para>This option controls whether old log directories are automatically |
|
deleted or not. The default value is <replaceable>true</replaceable>.</para> |
|
</entry> |
|
</row> |
|
|
|
<row id="conf-qtdir"> |
|
<entry>qtdir</entry> |
|
<entry>Module setting overrides global</entry> |
|
<entry>Set this option to set the environment variable <envar>QTDIR</envar> while building. |
|
You cannot override this setting in a module option. If you do not specify |
|
this option, it defaults to |
|
<filename class="directory"><symbol>${source-dir}</symbol>/build/qt</filename>, |
|
which uses the qt 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>Module setting 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 <replaceable>all</replaceable>) and the time taken to compile &kde;, |
|
since &kdesrc-build; will be unable to perform incremental builds.</para> |
|
</entry> |
|
</row> |
|
|
|
<row id="conf-repository"> |
|
<entry>repository</entry> |
|
<entry>Module setting overrides global</entry> |
|
<entry><para>This option was introduced with version 1.10, and is used to |
|
specify the &git; repository to download the source code for the module. |
|
&Qt; (and therefore qt) would need this option, as well as various |
|
&kde; modules that are in the process of conversion to use &git;.</para></entry> |
|
</row> |
|
|
|
<row id="conf-revision"> |
|
<entry>revision</entry> |
|
<entry>Module setting overrides global</entry> |
|
<entry><para>If this option is set to a value other than 0 (zero), &kdesrc-build; |
|
will force the source update to bring the module to the exact revision |
|
given, even if options like <link linkend="conf-branch">branch</link> are in |
|
effect. If the module is already at the given revision then it will not be |
|
updated further unless this option is changed or removed from the |
|
configuration.</para> |
|
|
|
<note><para>This option did not work for git-based modules (including <link |
|
linkend="kde-projects-module-sets">kde-projects</link> modules) until |
|
&kdesrc-build; version 1.16.</para></note> |
|
|
|
</entry> |
|
</row> |
|
|
|
<row id="conf-run-tests"> |
|
<entry>run-tests</entry> |
|
<entry>Module setting overrides global</entry> |
|
<entry>If set to <userinput>true</userinput>, then the module will be |
|
built with support for running its test suite, and the test suite will be |
|
executed as part of the build process. &kdesrc-build; will show a simple |
|
report of the test results. This is useful for developers or those who want |
|
to ensure their system is setup correctly.</entry> |
|
</row> |
|
|
|
<row id="conf-set-env"> |
|
<entry>set-env</entry> |
|
<entry>Module setting 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 <envar>RONALD</envar> 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 <link linkend="configure-data">configuration file</link>. 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>Module setting overrides global</entry> |
|
<entry>This option is used to set the directory on your computer to store the &kde; |
|
&subversion; sources at. If you do not specify this value, the default is |
|
<filename class="directory">~/kdesrc</filename>. You may use the tilde (~) |
|
to represent the home directory if using this option. |
|
</entry> |
|
</row> |
|
|
|
<row id="conf-ssh-identity-file"> |
|
<entry>ssh-identity-file</entry> |
|
<entry>Cannot be overridden</entry> |
|
<entry> |
|
<para>Set this option to control which private SSH key file is passed to the |
|
<command>ssh-add</command> command when &kdesrc-build; is downloading source |
|
code from repositories that require authentication. See also: <xref |
|
linkend="ssh-agent-reminder"/>.</para> |
|
|
|
<para>This option was added in version 1.14.2.</para> |
|
</entry> |
|
</row> |
|
|
|
<row id="conf-stop-on-failure"> |
|
<entry>stop-on-failure</entry> |
|
<entry>Module setting overrides global</entry> |
|
<entry>Set this option value to <userinput>true</userinput> 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-svn-server"> |
|
<entry>svn-server</entry> |
|
<entry>Module setting overrides global</entry> |
|
<entry><para>This option is used to set the server used to check out from &subversion;. |
|
The default is the anonymous &subversion; repository, <filename>svn://anonsvn.kde.org/</filename></para> |
|
<note><para>If you are developing for KDE, use the &subversion; repository that |
|
was provided to you when you received your developer account, instead of the |
|
anonymous repository.</para></note> |
|
</entry> |
|
</row> |
|
|
|
<row id="conf-tag"> |
|
<entry>tag</entry> |
|
<entry>Module setting 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 <emphasis>do not |
|
want</emphasis> 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> |
|
|
|
<note><para>This option has only been supported for git-based modules since |
|
&kdesrc-build; 1.16.</para></note> |
|
</entry> |
|
</row> |
|
|
|
<row id="conf-use-clean-install"> |
|
<entry>use-clean-install</entry> |
|
<entry>Module setting overrides global</entry> |
|
<entry><para>Set this option to <userinput>true</userinput> in order to |
|
have &kdesrc-build; run <command>make uninstall</command> directly before |
|
running <command>make install</command>.</para> |
|
|
|
<para>This can be useful in ensuring that there are not stray old library |
|
files, &cmake; metadata, etc. that can cause issues in long-lived &kde; |
|
installations. However this only works on build systems that support |
|
<command>make uninstall</command>.</para> |
|
|
|
<para>This option was added with &kdesrc-build; 1.12, but was not documented |
|
until &kdesrc-build; 1.16.</para> |
|
</entry> |
|
</row> |
|
|
|
<row> |
|
<entry>use-cmake</entry> |
|
<entry></entry> |
|
<entry>This option was removed in &kdesrc-build; 1.4 as all &kde; 4 modules |
|
require &cmake;, and &cmake; use is not permitted on any other modules. |
|
</entry> |
|
</row> |
|
|
|
<row id="conf-use-idle-io-priority"> |
|
<entry>use-idle-io-priority</entry> |
|
<entry>Cannot be overridden</entry> |
|
<entry>This option, added in &kdesrc-build; 1.12, will cause a lower priority |
|
to be used for disk and other I/O usage, which can significantly improve the |
|
responsiveness of the rest of the system at the expense of slightly longer |
|
running times for &kdesrc-build;. The default is to be disabled, to enable |
|
the lower disk priority set this to <userinput>true</userinput>. |
|
</entry> |
|
</row> |
|
|
|
<row id="conf-use-modules"> |
|
<entry>use-modules</entry> |
|
<entry>Can only use in <link linkend="module-sets">module-set</link></entry> |
|
<entry><para>This option, added in &kdesrc-build; 1.12.1, allows you to easily |
|
specify many different modules to build at the same point in <link |
|
linkend="kdesrc-buildrc">the configuration file</link>.</para> |
|
|
|
<para>This option <emphasis>must</emphasis> be used within a |
|
<literal>module-set</literal>. Every identifier passed to this option is |
|
internally converted to a &kdesrc-build; module, with a <link |
|
linkend="conf-repository"><option>repository</option></link> option set to the |
|
module-set's repository combined with the identifier name in order to setup the |
|
final repository to download from. All other options that are assigned in the |
|
module-set are also copied to the generated modules unaltered.</para> |
|
|
|
<para>The order that modules are defined in this option is important, because |
|
that is also the order that &kdesrc-build; will process the generated modules |
|
when updating, building, and installing. All modules defined in the given |
|
module-set will be handled before &kdesrc-build; moves to the next module after |
|
the module-set.</para> |
|
|
|
<para>If you need to change the options for a generated module, simply declare |
|
the module again after it is defined in the module-set, and set your options |
|
as needed. Although you will change the options set for the module this way, |
|
the module will still be updated and built in the order set by the module-set |
|
(i.e. you can't reorder the build sequence doing this).</para> |
|
|
|
<important><para>The name to use for the module if you do this is simply the |
|
name that you passed to <option>use-modules</option>, with the exception that |
|
any <literal>.git</literal> is removed.</para></important> |
|
|
|
<para>See <xref linkend="module-sets"/> and <link |
|
linkend="conf-git-repository-base">git-repository-base</link> for a description |
|
of its use and an example.</para> |
|
</entry> |
|
</row> |
|
|
|
<row id="conf-use-qt-builddir-hack"> |
|
<entry>use-qt-builddir-hack</entry> |
|
<entry>Module setting overrides global</entry> |
|
<entry>This option has been removed due to improvements in the &Qt; build |
|
system. |
|
</entry> |
|
</row> |
|
|
|
<row id="conf-use-stable-kde"> |
|
<entry>use-stable-kde</entry> |
|
<entry>Can't be overridden</entry> |
|
<entry><para>By default, &kdesrc-build; will build the main line of &kde; |
|
development (trunk or master branch). You can use the &branch; option globally |
|
or for a module in order to switch to a stable release. However, this is not |
|
convenient as a lot of branch options would have to be added to the |
|
configuration file and kept up to date when the next stable version is |
|
released.</para> |
|
|
|
<para>So, if you set this option to <replaceable>true</replaceable>, |
|
&kdesrc-build; will (for a given module) automatically download the version of |
|
that module which is marked as stable in kde_projects.xml.</para> |
|
|
|
<para>This option can only be set globally, but you can still use the &branch; |
|
or &tag; options for a module to override this option. |
|
This way you can easily choose to download current stable &kde; version by default |
|
while still choosing the current development version of specific modules. |
|
</para> |
|
|
|
</entry> |
|
</row> |
|
|
|
</tbody> |
|
|
|
</tgroup> |
|
</table> |
|
|
|
</sect1> |
|
</chapter> |
|
|
|
<chapter id="cmdline"> |
|
<title>Command Line Options and Environment Variables</title> |
|
|
|
<sect1 id="cmdline-usage"> |
|
<title>Command Line Usage</title> |
|
|
|
<para>&kdesrc-build; is designed to be run as follows:</para> |
|
|
|
<cmdsynopsis> |
|
<command>kdesrc-build</command> |
|
<arg rep="repeat"><replaceable>--options</replaceable></arg> |
|
<arg rep="repeat"><replaceable>modules to build</replaceable></arg> |
|
</cmdsynopsis> |
|
|
|
<para>If no modules to build are specified on the command line, then |
|
kdesrc-build will build all modules defined in its configuration file, in the |
|
order listed in that file (although this can be modified by various |
|
configuration file options).</para> |
|
|
|
<sect2 id="cmdline-usage-options"> |
|
<title>Commonly used command line options</title> |
|
|
|
<para>The full list of command line options is given in <xref |
|
linkend="supported-cmdline-params"/>. The most-commonly used options |
|
include:</para> |
|
|
|
<variablelist> |
|
<varlistentry> |
|
<term><option>--pretend</option> (or <option>-p</option>)</term> |
|
<listitem><para>This option causes &kdesrc-build; to indicate what actions |
|
it would take, without actually really implementing them. This can be |
|
useful to make sure that the modules you think you are building will |
|
actually get built.</para></listitem> |
|
</varlistentry> |
|
|
|
<varlistentry> |
|
<term><option>--refresh-build</option></term> |
|
<listitem><para>This option forces &kdesrc-build; to build the given |
|
modules from an absolutely fresh start point. Any existing build directory |
|
for that module is removed and it is rebuilt. This option is useful if you |
|
have errors building a module, and sometimes is required when &Qt; or &kde; |
|
libraries change.</para></listitem> |
|
</varlistentry> |
|
|
|
<varlistentry> |
|
<term><option>--no-src</option></term> |
|
<listitem><para>This option skips the source update process. You might use |
|
it if you have very recently updated the source code (perhaps you did it |
|
manually or recently ran &kdesrc-build;) but still want to rebuild some |
|
modules.</para></listitem> |
|
</varlistentry> |
|
|
|
<varlistentry> |
|
<term><option>--no-build</option></term> |
|
<listitem><para>This option is similar to <option>--no-src</option> above, |
|
but this time the build process is skipped.</para></listitem> |
|
</varlistentry> |
|
</variablelist> |
|
|
|
</sect2> |
|
|
|
<sect2 id="cmdline-usage-modules"> |
|
<title>Specifying modules to build</title> |
|
|
|
<para>In general, specifying modules to build is as simple as passing their |
|
module name as you defined it in the configuration file. You can also pass |
|
modules that are part of a module set, either as named on <link |
|
linkend="conf-use-modules">use-modules</link>, or the name of the entire module |
|
set itself, if you have given it a name.</para> |
|
|
|
<para>In the specific case of module sets based against the <link |
|
linkend="kde-projects-module-sets">KDE project database</link>, &kdesrc-build; |
|
will expand module name components to determine the exact module you |
|
want. For example, &kdesrc-build;'s KDE project entry locates the project in |
|
<literal>extragear/utils/kdesrc-build</literal>. You could specify any |
|
of the following to build &kdesrc-build;:</para> |
|
|
|
<informalexample> |
|
<screen> |
|
<prompt>%</prompt> <command>kdesrc-build</command> <option><replaceable>+extragear/utils/kdesrc-build</replaceable></option> |
|
<prompt>%</prompt> <command>kdesrc-build</command> <option><replaceable>+utils/kdesrc-build</replaceable></option> |
|
<prompt>%</prompt> <command>kdesrc-build</command> <option><replaceable>+kdesrc-build</replaceable></option> |
|
</screen> |
|
</informalexample> |
|
|
|
<note><para>The commands in the previous example preceded the module-name with |
|
a <symbol>+</symbol>. This forces the module name to be interpreted as a module |
|
from the KDE project database, even if that module hasn't been defined in your |
|
configuration file. |
|
</para></note> |
|
|
|
<para>Be careful about specifying very generic projects (e.g. |
|
<literal>extragear/utils</literal> by itself), as this can lead to a large |
|
amount of modules being built. You should use the <option>--pretend</option> |
|
option before building a new module set to ensure it is only building the |
|
modules you want.</para> |
|
|
|
</sect2> |
|
</sect1> |
|
|
|
<sect1 id="supported-envvars"> |
|
<title>Supported Environment Variables</title> |
|
|
|
<para> |
|
&kdesrc-build; does not 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> |
|
|
|
</sect1> |
|
|
|
<sect1 id="supported-cmdline-params"> |
|
<title>Supported command-line parameters</title> |
|
|
|
<para> |
|
The script accepts the following command-line options: |
|
</para> |
|
|
|
<variablelist> |
|
|
|
<varlistentry id="cmdline-async"> |
|
<term><parameter>--async</parameter></term> |
|
<listitem><para> |
|
Enables the <link linkend="conf-async">asynchronous mode</link>, which can |
|
perform the source code updates and module builds at the same time. This is |
|
the default, this option only needs specified if you have disabled it in the |
|
configuration. |
|
</para></listitem> |
|
</varlistentry> |
|
|
|
<varlistentry id="cmdline-help"> |
|
<term><parameter>--help</parameter></term> |
|
<listitem><para> |
|
Only display simple help on this script. |
|
</para></listitem> |
|
</varlistentry> |
|
|
|
<varlistentry id="cmdline-version"> |
|
<term><parameter>--version</parameter></term> |
|
<listitem><para> |
|
Display the program version. |
|
</para></listitem> |
|
</varlistentry> |
|
|
|
<varlistentry id="cmdline-author"> |
|
<term><parameter>--author</parameter></term> |
|
<listitem><para> |
|
Display contact information for the |
|
author. |
|
</para></listitem> |
|
</varlistentry> |
|
|
|
<varlistentry id="cmdline-color"> |
|
<term><parameter>--color</parameter></term> |
|
<listitem><para> |
|
Enable colorful output. (This is the default for interactive terminals). |
|
</para></listitem> |
|
</varlistentry> |
|
|
|
<varlistentry id="cmdline-nice"> |
|
<term><parameter>--nice=<replaceable>value</replaceable></parameter></term> |
|
<listitem><para> |
|
This value adjusts the computer CPU priority requested by &kdesrc-build;, and |
|
should be in the range of 0-20. 0 is highest priority (because it is the |
|
least <quote>nice</quote>), 20 is lowest priority. &kdesrc-build; defaults |
|
to 10. |
|
</para></listitem> |
|
</varlistentry> |
|
|
|
<varlistentry id="cmdline-no-async"> |
|
<term><parameter>--no-async</parameter></term> |
|
<listitem><para> |
|
Disables the <link linkend="conf-async">asynchronous mode</link> of updating. |
|
Instead the update will be performed in its entirety before the build starts. |
|
This option will slow down the overall process, but if you encounter IPC errors |
|
while running &kdesrc-build; try using this option, and submitting a |
|
<ulink url="http://bugs.kde.org/">bug report</ulink>. |
|
</para></listitem> |
|
</varlistentry> |
|
|
|
<varlistentry id="cmdline-no-color"> |
|
<term><parameter>--no-color</parameter></term> |
|
<listitem><para> |
|
Disable colorful output. |
|
</para></listitem> |
|
</varlistentry> |
|
|
|
<varlistentry id="cmdline-pretend"> |
|
<term><parameter>--pretend</parameter> (or <parameter>-p</parameter>)</term> |
|
<listitem><para> |
|
&kdesrc-build; will run through the update and build process, but instead of |
|
performing any actions to update or build, will instead output what the |
|
script would have done (e.g. what commands to run, general steps being taken, |
|
etc.).</para> |
|
|
|
<para>Note: Simple read-only commands (such as reading file information) may |
|
still be run to make the output more relevant (such as correctly simulating |
|
whether source code would be checked out or updated). |
|
</para></listitem> |
|
</varlistentry> |
|
|
|
<varlistentry id="cmdline-quiet"> |
|
<term><parameter>--quiet</parameter> (or <parameter>-q</parameter>)</term> |
|
<listitem><para> |
|
Do not be as noisy with the output. With this switch only the basics are |
|
output. |
|
</para></listitem> |
|
</varlistentry> |
|
|
|
<varlistentry id="cmdline-really-quiet"> |
|
<term><parameter>--really-quiet</parameter></term> |
|
<listitem><para> |
|
Only output warnings and errors. |
|
</para></listitem> |
|
</varlistentry> |
|
|
|
<varlistentry id="cmdline-verbose"> |
|
<term><parameter>--verbose</parameter> (or <parameter>-v</parameter>)</term> |
|
<listitem><para> |
|
Be very descriptive about what is going on, and what &kdesrc-build; is doing. |
|
</para></listitem> |
|
</varlistentry> |
|
|
|
<varlistentry id="cmdline-src-only"> |
|
<term><parameter>--src-only</parameter> (or <parameter>--svn-only</parameter>)</term> |
|
<listitem><para> |
|
Only perform the source update. (The <parameter>--svn-only</parameter> is |
|
only supported for compatibility with older scripts). |
|
</para></listitem> |
|
</varlistentry> |
|
|
|
<varlistentry id="cmdline-build-only"> |
|
<term><parameter>--build-only</parameter></term> |
|
<listitem><para> |
|
Only perform the build process. |
|
</para></listitem> |
|
</varlistentry> |
|
|
|
<varlistentry id="cmdline-ignore-modules"> |
|
<term><parameter>--ignore-modules</parameter></term> |
|
<listitem><para> |
|
Do not include the modules passed on the rest of the command line in the |
|
update/build process (this is useful if you want to build most of the modules |
|
in your <link linkend="configure-data">configuration file</link> and just skip |
|
a few). |
|
</para></listitem> |
|
</varlistentry> |
|
|
|
<varlistentry id="cmdline-no-src"> |
|
<term><parameter>--no-src</parameter> (or <parameter>--no-svn</parameter>)</term> |
|
<listitem><para> |
|
Skip contacting the &subversion; server. (The <parameter>--no-svn</parameter> |
|
parameter is only supported for compatibility with older versions of the |
|
script). |
|
</para></listitem> |
|
</varlistentry> |
|
|
|
<varlistentry id="cmdline-no-build"> |
|
<term><parameter>--no-build</parameter></term> |
|
<listitem><para> |
|
Skip the build process. |
|
</para></listitem> |
|
</varlistentry> |
|
|
|
<varlistentry id="cmdline-no-install"> |
|
<term><parameter>--no-install</parameter></term> |
|
<listitem><para> |
|
Do not automatically install packages after they are built. |
|
</para></listitem> |
|
</varlistentry> |
|
|
|
<varlistentry id="cmdline-no-build-when-unchanged"> |
|
<term><parameter>--no-build-when-unchanged</parameter></term> |
|
<term><parameter>--force-build</parameter></term> |
|
<listitem><para> |
|
This option explicitly disables skipping the build process (an optimization |
|
controlled by the <link |
|
linkend="conf-build-when-unchanged">build-when-unchanged</link> option). This is |
|
useful for making &kdesrc-build; run the build when you have changed something |
|
that &kdesrc-build; cannot check.</para> |
|
|
|
<para><parameter>--force-build</parameter> performs the exact same function, and |
|
is perhaps easier to remember.</para> |
|
</listitem> |
|
</varlistentry> |
|
|
|
<varlistentry id="cmdline-debug"> |
|
<term><parameter>--debug</parameter></term> |
|
<listitem><para> |
|
Enables debug mode for the script. Currently this means that all output will be |
|
dumped to the standard output in addition to being logged in the log directory |
|
like normal. Also, many functions are much more verbose about what they are |
|
doing in debugging mode. |
|
</para></listitem> |
|
</varlistentry> |
|
|
|
<varlistentry id="cmdline-no-rebuild-on-fail"> |
|
<term><parameter>--no-rebuild-on-fail</parameter></term> |
|
<listitem><para> |
|
Do not try to |
|
rebuild modules that have failed building from scratch. &kdesrc-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><parameter>--refresh-build</parameter></term> |
|
<listitem><para> |
|
Recreate the build system and make from scratch. |
|
</para></listitem> |
|
</varlistentry> |
|
|
|
<varlistentry id="cmdline-reconfigure"> |
|
<term><parameter>--reconfigure</parameter></term> |
|
<listitem><para> |
|
Run <command>cmake</command> (for &kde; modules) or |
|
<command>configure</command> (for &Qt;) again, without cleaning the build |
|
directory. You should not normally have to specify this, as &kdesrc-build; will |
|
detect when you change the relevant options and automatically re-run the build |
|
setup. This option is implied if <parameter><link |
|
linkend="cmdline-refresh-build">--refresh-build</link></parameter> is used. |
|
</para></listitem> |
|
</varlistentry> |
|
|
|
<varlistentry id="cmdline-resume-from"> |
|
<term><parameter>--resume-from</parameter></term> |
|
<listitem><para> |
|
This option is used to resume the build starting from the given module, which |
|
should be the next option on the command line. You should not |
|
specify other module names on the command line. |
|
</para> |
|
|
|
<note><para>This option formerly added <link |
|
linkend="cmdline-no-src"><parameter>--no-src</parameter></link>, but does |
|
not any longer (since &kdesrc-build; 1.13). If you want to avoid source updates |
|
when resuming, simply pass <option><userinput>--no-src</userinput></option> |
|
in addition to the other options. |
|
</para></note> |
|
|
|
<para>See also: <xref linkend="cmdline-resume-after"/> and <xref |
|
linkend="resuming-failed"/>. You would prefer to use this command line option |
|
if you have fixed the build error and want &kdesrc-build; to complete the |
|
build.</para></listitem> |
|
</varlistentry> |
|
|
|
<varlistentry id="cmdline-resume-after"> |
|
<term><parameter>--resume-after</parameter></term> |
|
<listitem><para> |
|
This option is used to resume the build starting after the given module, which |
|
should be the next option on the command line. You should not |
|
specify other module names on the command line. |
|
</para> |
|
|
|
<note><para>This option formerly added <link |
|
linkend="cmdline-no-src"><parameter>--no-src</parameter></link>, but does |
|
not any longer (since &kdesrc-build; 1.13). If you want to avoid source updates |
|
when resuming, simply pass <option><userinput>--no-src</userinput></option> |
|
in addition to the other options. |
|
</para></note> |
|
|
|
<para>See also: <xref linkend="cmdline-resume-from"/> and <xref |
|
linkend="resuming-failed"/>. You would prefer to use this command line option |
|
if you have fixed the build error and have also built and installed the module |
|
yourself, and want &kdesrc-build; to start again with the next |
|
module.</para></listitem> |
|
</varlistentry> |
|
|
|
<varlistentry id="cmdline-stop-before"> |
|
<term><parameter>--stop-before</parameter></term> |
|
<listitem><para> |
|
This command line option is used to stop the normal build process just |
|
<emphasis>before</emphasis> a module would ordinarily be built. |
|
</para><para> |
|
For example, if the normal build list was <simplelist type="inline"> |
|
<member>moduleA</member><member>moduleB</member><member>moduleC</member></simplelist>, |
|
then <option>--stop-before=<replaceable>moduleB</replaceable></option> would cause |
|
&kdesrc-build; to only build <literal>moduleA</literal>. |
|
</para><para> |
|
This command line option was added with &kdesrc-build; 1.16. |
|
</para></listitem> |
|
</varlistentry> |
|
|
|
<varlistentry id="cmdline-stop-after"> |
|
<term><parameter>--stop-after</parameter></term> |
|
<listitem><para> |
|
This command line option is used to stop the normal build process just |
|
<emphasis>after</emphasis> a module would ordinarily be built. |
|
</para><para> |
|
For example, if the normal build list was <simplelist type="inline"> |
|
<member>moduleA</member><member>moduleB</member><member>moduleC</member></simplelist>, |
|
then <option>--stop-after=<replaceable>moduleB</replaceable></option> would cause |
|
&kdesrc-build; to build <literal>moduleA</literal> and <literal>moduleB</literal>. |
|
</para><para> |
|
This command line option was added with &kdesrc-build; 1.16. |
|
</para></listitem> |
|
</varlistentry> |
|
|
|
<varlistentry id="cmdline-rc-file"> |
|
<term><parameter>--rc-file</parameter></term> |
|
<listitem><para> |
|
This interprets the next command line parameter as the file to read the |
|
configuration options from. The default value for this parameter is |
|
<filename>kdesrc-buildrc</filename> (checked in the current directory) if |
|
it is present, or <filename>~/.kdesrc-buildrc</filename> otherwise. See |
|
also <xref linkend="kdesrc-buildrc" />. |
|
</para></listitem> |
|
</varlistentry> |
|
|
|
<varlistentry id="cmdline-run"> |
|
<term><parameter>--run</parameter></term> |
|
<listitem><para> |
|
This option interprets the next item on the command line as a program to run, |
|
and &kdesrc-build; will then finish reading the configuration file, update the |
|
environment as normal, and then execute the given program.</para> |
|
|
|
<para>This will not work to start a shell with the &kdesrc-build; environment |
|
in most cases however, since interactive shells typically reset at least part |
|
of the environment variables (such as <envar>PATH</envar> and |
|
<envar>KDEDIRS</envar>) in the startup sequence. |
|
</para> |
|
|
|
<tip><para>If you want to see the environment used by &kdesrc-build;, you |
|
can run the <command>printenv</command> command:</para> |
|
<informalexample> |
|
<screen>$ <command>kdesrc-build</command> <parameter>--run</parameter> <parameter>printenv</parameter> |
|
KDE_SESSION_VERSION=4 |
|
SDL_AUDIODRIVER=alsa |
|
LANGUAGE= |
|
XCURSOR_THEME=Oxygen_Blue |
|
LESS=-R -M --shift 5 |
|
QMAIL_CONTROLDIR=/var/qmail/control |
|
... etc. |
|
</screen> |
|
</informalexample></tip> |
|
</listitem> |
|
</varlistentry> |
|
|
|
<varlistentry id="cmdline-prefix"> |
|
<term><parameter>--prefix=</path/to/kde></parameter></term> |
|
<listitem><para> |
|
This allows you to change the directory that &kde; will be installed to from |
|
the command line. This option implies <link |
|
linkend="cmdline-reconfigure"><parameter>--reconfigure</parameter></link>, |
|
but using <link linkend="cmdline-refresh-build"><parameter>--refresh-build</parameter></link> |
|
may still be required. |
|
</para></listitem> |
|
</varlistentry> |
|
|
|
<varlistentry id="cmdline-revision"> |
|
<term><parameter>--revision</parameter></term> |
|
<listitem><para> |
|
This option causes &kdesrc-build; to checkout a specific numbered revision |
|
for each &subversion; module, overriding any <link linkend="conf-branch">branch</link>, |
|
<link linkend="conf-tag">tag</link>, or <link linkend="conf-revision">revision</link> |
|
options already set for these modules.</para> |
|
|
|
<para>This option is likely not a good idea, and is only supported for |
|
compatibility with older scripts. |
|
</para></listitem> |
|
</varlistentry> |
|
|
|
<varlistentry id="cmdline-build-system-only"> |
|
<term><parameter>--build-system-only</parameter></term> |
|
<listitem><para> |
|
This option causes &kdesrc-build; to abort building a module just before |
|
the <command>make</command> command would have been run. This is supported |
|
for compatibility with older versions only, this effect is not helpful for |
|
the current &kde; build system. |
|
</para></listitem> |
|
</varlistentry> |
|
|
|
<varlistentry id="cmdline-install"><term><parameter>--install</parameter></term> |
|
<listitem><para> |
|
If this is the only command-line option, it tries to install all of the modules |
|
contained in <filename>log/latest/build-status</filename>. If command-line |
|
options are specified after <parameter>--install</parameter>, they are all |
|
assumed to be modules to install (even if they did not successfully build on |
|
the last run). |
|
</para></listitem> |
|
</varlistentry> |
|
|
|
<varlistentry id="cmdline-no-snapshots"><term><parameter>--no-snapshots</parameter></term> |
|
<listitem><para> |
|
Supplying this option causes &kdesrc-build; to always perform a normal initial |
|
checkout of a module instead of using a quick-start snapshot (only available |
|
for Git modules from the <literal>kde-projects</literal> repository). |
|
|
|
Note that this option should only be used if there is a failure using |
|
snapshots, as the quick-start snapshot reduces load on the KDE source |
|
repositories. |
|
</para> |
|
|
|
<note><para>Module snapshots <emphasis>are</emphasis> real checkouts. You |
|
should not need to specify this option, it is only a troubleshooting |
|
aid.</para></note> |
|
</listitem> |
|
</varlistentry> |
|
|
|
<varlistentry id="cmdline-delete-my-patches"> |
|
<term><parameter>--delete-my-patches</parameter></term> |
|
<listitem><para> |
|
This option is used to let &kdesrc-build; delete source directories that may |
|
contain user data, so that the module can be re-downloaded. This would normally |
|
only be useful for &kde; developers (who might have local changes that would be |
|
deleted).</para> |
|
|
|
<para>This is currently only used to checkout modules that have been converted |
|
from &subversion; to &git;. You should not use this option normally, |
|
&kdesrc-build; will prompt to be re-run with it if it is needed.</para> |
|
</listitem> |
|
</varlistentry> |
|
|
|
<varlistentry id="cmdline-delete-my-settings"> |
|
<term><parameter>--delete-my-settings</parameter></term> |
|
<listitem><para> |
|
This option is used to let &kdesrc-build; overwrite existing files which may contain |
|
user data.</para> |
|
|
|
<para>This is currently only used for xsession setup for the login manager. You |
|
should not use this option normally, &kdesrc-build; will prompt to be re-run |
|
with it if it is needed.</para> |
|
</listitem> |
|
</varlistentry> |
|
|
|
<varlistentry id="cmdline-global-option"> |
|
<term><parameter>--<option-name>=</parameter></term> |
|
<listitem><para> |
|
You can use this option to override an option in your <link linkend="configure-data">configuration file</link> for |
|
every module. For instance, to override the <link |
|
linkend="conf-log-dir">log-dir</link> option, you would do: |
|
<userinput><parameter>--log-dir=<filename class="directory"><replaceable>/path/to/dir</replaceable></filename></parameter></userinput>. |
|
</para></listitem> |
|
</varlistentry> |
|
|
|
<varlistentry id="cmdline-module-option"> |
|
<term><parameter>--<module-name>,<option-name>=</parameter></term> |
|
<listitem><para> |
|
You can use this option to override an option in your <link linkend="configure-data">configuration file</link> for |
|
a specific module. |
|
</para></listitem> |
|
</varlistentry> |
|
|
|
</variablelist> |
|
|
|
<para> |
|
Any other command-line options are assumed to be modules to update and build. |
|
Please, do not mix building with installing. |
|
</para> |
|
|
|
</sect1> |
|
|
|
</chapter> |
|
|
|
<chapter id="using-kdesrc-build"> |
|
<title>Using &kdesrc-build;</title> |
|
|
|
<sect1 id="using-kdesrc-build-preface"> |
|
<title>Preface</title> |
|
|
|
<para>Normally using &kdesrc-build; after you have gone through <xref linkend="getting-started" /> |
|
is as easy as doing the following from a terminal prompt:</para> |
|
|
|
<screen> |
|
<prompt>%</prompt> <command><userinput>kdesrc-build</userinput></command> |
|
</screen> |
|
|
|
<para>&kdesrc-build; will then download the sources for &kde;, try to configure |
|
and build them, and then install them.</para> |
|
|
|
<para>Read on to discover how &kdesrc-build; does this, and what else you can |
|
do with this tool.</para> |
|
|
|
</sect1> |
|
|
|
<sect1 id="basic-features"> |
|
<title>Basic &kdesrc-build; features</title> |
|
|
|
<sect2 id="using-qt"> |
|
<title>qt support</title> |
|
<para>&kdesrc-build; supports building the &Qt; toolkit used by &kde; software |
|
as a convenience to users. This support is handled by a special module named |
|
qt.</para> |
|
|
|
<note><para>&Qt; is developed under a separate repository from &kde; software |
|
located at <ulink |
|
url="http://qt.gitorious.org/qt">http://qt.gitorious.org/qt</ulink>.</para></note> |
|
|
|
<para>In order to build &Qt;, you should make sure that the |
|
<link linkend="conf-qtdir">qtdir</link> setting is set to the directory you'd |
|
like to install &Qt; to, as described in <xref linkend="configure-data"/>.</para> |
|
|
|
<para>You should then ensure that the qt module is added to |
|
your <filename>.kdesrc-buildrc</filename>, before any other modules in the |
|
file. If you are using the sample configuration file, you can simply |
|
uncomment the existing qt module entry.</para> |
|
|
|
<para>Now you should verify the <link |
|
linkend="conf-repository">repository</link> option and <link |
|
linkend="conf-branch">branch</link> options are set appropriately:</para> |
|
|
|
<orderedlist> |
|
<listitem><para>The first option is to build &Qt; using a mirror maintained |
|
on the &kde; source repositories (no other changes are applied, it is simply |
|
a clone of the official source). This is highly recommended due to occasional |
|
issues with cloning the full &Qt; module from its official repository.</para> |
|
|
|
<para>You can set the <option>repository</option> option for the qt |
|
module to <userinput>kde:qt</userinput> to use this option.</para> |
|
</listitem> |
|
|
|
<listitem><para>Otherwise, to build the standard &Qt;, set your |
|
<option>repository</option> option to |
|
<userinput>git://gitorious.org/qt/qt.git</userinput>. Note that you may |
|
experience problems performing the initial clone of &Qt; from this |
|
repository.</para></listitem> |
|
</orderedlist> |
|
|
|
<para>In both cases, the branch option should be set to <userinput>master</userinput> (unless you'd |
|
like to build a different branch).</para> |
|
|
|
</sect2> |
|
|
|
<sect2 id="kdesrc-build-std-flags"> |
|
<title>Standard flags added by &kdesrc-build;</title> |
|
<para>To save you time, &kdesrc-build; adds some standard paths to your |
|
environment for you: |
|
</para> |
|
|
|
<itemizedlist> |
|
<listitem><para> |
|
The path to the &kde; and &Qt; libraries is added to the |
|
<envar>LD_LIBRARY_PATH</envar> variable automatically. This means that you |
|
do not need to edit &libpath; to include them. |
|
</para></listitem> |
|
|
|
<listitem><para> |
|
The path to the &kde; and &Qt; development support programs are added to the |
|
<envar>PATH</envar> variable automatically. This means that you do not need to |
|
edit &binpath; to include them. |
|
</para></listitem> |
|
|
|
<listitem><para> |
|
The path to the &kde;-provided <application>pkg-config</application> is added |
|
automatically to <envar>PKG_CONFIG_PATH</envar>. This means that you do not |
|
need to use &set-env; to add these. |
|
</para></listitem> |
|
|
|
<listitem><para> |
|
The setting for &kdedir; is automatically propagated to the <envar>KDEDIR</envar> |
|
environment variable while building. (<envar>KDEDIRS</envar> is not affected). |
|
</para></listitem> |
|
|
|
<listitem><para> |
|
The setting for &qtdir; is automatically propagated to the <envar>QTDIR</envar> |
|
environment variable while building. |
|
</para></listitem> |
|
|
|
</itemizedlist> |
|
|
|
</sect2> |
|
|
|
<sect2 id="build-priority"> |
|
<title>Changing &kdesrc-build;'s build priority</title> |
|
<para>Programs can run with different priority levels on Operating Systems, |
|
including &Linux; and &BSD;. This allows the system to allocate time for the |
|
different programs in accordance with how important they are. |
|
</para> |
|
|
|
<para>&kdesrc-build; will normally allocate itself a low priority so that the |
|
rest of the programs on your system are unaffected and can run normally. |
|
Using this technique, &kdesrc-build; will use extra CPU when it is available. |
|
</para> |
|
|
|
<para>&kdesrc-build; will still maintain a high enough priority level so that |
|
it runs before routine batch processes and before CPU donation programs |
|
such as <ulink url="http://setiathome.ssl.berkeley.edu/">Seti@Home</ulink>. |
|
</para> |
|
|
|
<para>To alter &kdesrc-build; so that it uses a higher (or lower) priority |
|
level permanently, then you need to adjust the &niceness; setting in the <link |
|
linkend="configure-data">configuration file</link>. The &niceness; setting |
|
controls how <quote>nice</quote> &kdesrc-build; is to other programs. In other |
|
words, having a higher &niceness; gives &kdesrc-build; a lower priority. So to |
|
give &kdesrc-build; a higher priority, reduce the &niceness; (and vice versa). |
|
The &niceness; can go from 0 (not nice at all, highest priority) to 20 (super |
|
nice, lowest priority).</para> |
|
|
|
<para>You can also temporarily change the priority for &kdesrc-build; by using |
|
the &cmd-nice; <link linkend="cmdline">command line option</link>. The value to |
|
the option is used exactly the same as for &niceness;.</para> |
|
|
|
<note><para>It is possible for some programs run by the super user to have a |
|
negative nice value, with a correspondingly even higher priority for such |
|
programs. Setting a negative (or even 0) &niceness; for &kdesrc-build; is not |
|
a great idea, as it will not help run time significantly, but will make your |
|
computer seem very sluggish should you still need to use it. |
|
</para></note> |
|
|
|
<informalexample> |
|
<para>To run &kdesrc-build; with a niceness of 15 (a lower priority than |
|
normal):</para> |
|
|
|
<screen> |
|
<prompt>%</prompt> <userinput><command>kdesrc-build</command> <option>--nice=<replaceable>15</replaceable></option></userinput> |
|
</screen> |
|
|
|
<para>Or, you can edit the <link linkend="configure-data">configuration file</link> to make the change permanent:</para> |
|
|
|
<screen> |
|
&niceness; <replaceable>15</replaceable> |
|
</screen> |
|
</informalexample> |
|
|
|
<tip> |
|
<para>The <link linkend="conf-niceness">niceness</link> option only affects the |
|
usage of the computer's processor(s). One other major affect on computer |
|
performance relates to how much data input or output (<acronym>I/O</acronym>) a |
|
program uses. In order to control how much <acronym>I/O</acronym> a program can |
|
use, modern &Linux; operating systems support a similar tool called |
|
<application>ionice</application>. &kdesrc-build; supports |
|
<application>ionice</application>, (but only to enable or disable it |
|
completely) using the <link |
|
linkend="conf-use-idle-io-priority">use-idle-io-priority</link> option, |
|
since &kdesrc-build; version 1.12. |
|
</para> |
|
</tip> |
|
|
|
</sect2> |
|
|
|
<sect2 id="root-installation"> |
|
<title>Installation as the superuser</title> |
|
<para>You may wish to have &kdesrc-build; run the installation with super user |
|
privileges. This may be for the unrecommended system-wide installation. |
|
This is also useful when using a recommended single user &kde; build, however. |
|
This is because some modules (especially kdebase) install programs that will |
|
briefly need elevated permissions when run. They are not able to achieve these |
|
permission levels unless they are installed with the elevated permissions. |
|
</para> |
|
|
|
<para>You could simply run &kdesrc-build; as the super user directly, but this |
|
is not recommended, since the program has not been audited for that kind of use. |
|
Although it should be safe to run the program in this fashion, it is better to |
|
avoid running as the super user when possible.</para> |
|
|
|
<para>To take care of this, &kdesrc-build; provides the &make-install-prefix; |
|
option. You can use this option to specify a command to use to perform the |
|
installation as another user. The recommended way to use this command is with |
|
the &sudo; program, which will run the install command as the super user. |
|
</para> |
|
|
|
<informalexample> |
|
<para>For example, to install all modules using &sudo;, |
|
you could do something like this:</para> |
|
|
|
<screen> |
|
global |
|
&make-install-prefix; <replaceable>sudo</replaceable> |
|
# Other options |
|
end global |
|
</screen> |
|
|
|
<para>To use &make-install-prefix; for only a single module, this would work: |
|
</para> |
|
|
|
<screen> |
|
module <replaceable>svn-module-name</replaceable> |
|
&make-install-prefix; <replaceable>sudo</replaceable> |
|
end module |
|
</screen> |
|
</informalexample> |
|
|
|
</sect2> |
|
|
|
<sect2 id="build-progress"> |
|
<title>Showing the progress of a module build</title> |
|
<para>This feature is always available, and is automatically enabled when |
|
possible. What this does is display an estimated build progress while |
|
building a module; that way you know about how much longer it will take to |
|
build a module. |
|
</para> |
|
|
|
</sect2> |
|
|
|
</sect1> |
|
|
|
<sect1 id="advanced-features"> |
|
<title>Advanced features</title> |
|
|
|
<sect2 id="partial-builds"> |
|
<title>Partially building a module</title> |
|
<para>It is possible to build only pieces from a single &kde; module. For |
|
example, you may want to compile only one program from a module. &kdesrc-build; |
|
has features to make this easy. There are several complementing ways to |
|
do this. |
|
</para> |
|
|
|
<sect3 id="checking-out-parts"> |
|
<title>Checking out portions of a module</title> |
|
|
|
<para>This is perhaps the best way to do this. When it works, it will save you |
|
download time and disk space. What happens is that &kdesrc-build; will download |
|
only the parts of a module that you specify. This is done using the &checkout-only; |
|
option for a module, which will specify a list of directories to download. |
|
</para> |
|
|
|
<tip><para> |
|
If you do not already know what to download from a module, it may be a good idea |
|
to browse the &subversion; layout for a module first, using |
|
<ulink url="http://websvn.kde.org/branches/KDE/4.6/">WebSVN</ulink>. |
|
</para></tip> |
|
|
|
<informalexample> |
|
<para>To only grab &kuser; and <application>KSystemLog</application> from |
|
kdeadmin, you could use &checkout-only; like this:</para> |
|
|
|
<screen> |
|
module <replaceable>kdeadmin</replaceable> |
|
&checkout-only; <replaceable>kuser ksystemlog</replaceable> |
|
end module |
|
</screen> |
|
|
|
</informalexample> |
|
|
|
<important><para>The directories will be built in the order they are listed |
|
in the option. If one of the directories needs something else from the module |
|
to compile, then you need to make sure they are both in the &checkout-only; |
|
line, and that the required dependency goes before the directory that needs it.</para> |
|
|
|
<para>Also, sometimes an application may need other directories and it is hard |
|
to figure out what they are, which may require some trial and error of constantly |
|
adding directories to the option to figure out. This option depends on support |
|
from the build system of the module, so it is only useful for modules that are |
|
collections of individual applications.</para> |
|
</important> |
|
|
|
<para>One final note to make about this option: If you change the value of this |
|
option, you should use <userinput><command>kdesrc-build</command> |
|
<option>&cmd-refresh-build;</option> <option><replaceable>module</replaceable></option></userinput> |
|
in order to ensure that the module is reconfigured properly. In addition, |
|
&kdesrc-build; will never remove existing files if you take away the number of |
|
directories from your &checkout-only; option, or add the option to a module that |
|
has already been checked out.</para> |
|
|
|
</sect3> |
|
|
|
<sect3 id="not-compiling"> |
|
<title>Removing directories from a build</title> |
|
<para>Instead of restricting what is downloaded, it is possible to download |
|
everything but have the build system leave out a few directories when it does |
|
the build. This may be useful if one directory always breaks and is |
|
unnecessary to the rest of the module. |
|
</para> |
|
|
|
<para>This is controlled with the &do-not-compile; option. It works similar |
|
to the &checkout-only; option just described, in that it is simply a list of |
|
directories that should not be compiled.</para> |
|
|
|
<important><para> |
|
Also like &checkout-only;, this option requires at least that the |
|
build system for the module is reconfigured after changing |
|
it. This is done using the <userinput><command>kdesrc-build</command> |
|
<option>&cmd-reconfigure;</option> |
|
<option><replaceable>module</replaceable></option></userinput> command. |
|
</para></important> |
|
|
|
<informalexample> |
|
<para>To remove the <filename class="directory">python</filename> directory |
|
from the kdebindings build process:</para> |
|
|
|
<screen> |
|
module <replaceable>kdebindings</replaceable> |
|
&do-not-compile; <replaceable>python</replaceable> |
|
end module |
|
</screen> |
|
|
|
</informalexample> |
|
|
|
<note><para>This function depends on some standard conventions used in most |
|
&kde; modules. Therefore it may not work for all programs.</para></note> |
|
|
|
</sect3> |
|
|
|
</sect2> |
|
|
|
<sect2 id="using-branches"> |
|
<title>Branching and tagging support for &kdesrc-build;</title> |
|
|
|
<sect3 id="branches-and-tags"> |
|
<title>What are branches and tags?</title> |
|
|
|
<para>&subversion; supports managing the history of the &kde; source code. &kde; |
|
uses this support to create branches for development, and to tag the repository |
|
every so often with a new version release. |
|
</para> |
|
|
|
<para>For example, the &kmail; developers may be working on a new feature in |
|
a different branch in order to avoid breaking the version being used by most |
|
developers. This branch has development ongoing inside it, even while the |
|
main branch (called /trunk) may have development going on inside of it. |
|
</para> |
|
|
|
<para>A tag, on the other hand, is a snapshot of the source code repository |
|
at a position in time. This is used by the &kde; administration team to mark |
|
off a version of code suitable for release and still allow the developers to |
|
work on the code. |
|
</para> |
|
|
|
<para>In &subversion;, there is no difference between branches, tags, or trunk within |
|
the code. It is only a convention used by the developers. This makes it |
|
difficult to properly support branches and tags within &kdesrc-build;. However, |
|
there are some things that can be done. |
|
</para> |
|
|
|
</sect3> |
|
|
|
<sect3 id="branch-support"> |
|
<title>How to use branches and tags</title> |
|
|
|
<para>Support for branches and tags is handled by a set of options, which |
|
range from a generic request for a version, to a specific &url; to download |
|
for advanced users. |
|
</para> |
|
|
|
<para>The easiest method is to use the &branch; and &tag; options. You simply |
|
use the option along with the name of the desired branch or tag for a module, |
|
and &kdesrc-build; will try to determine the appropriate location within the |
|
&kde; repository to download from. For most &kde; modules this works very |
|
well.</para> |
|
|
|
<informalexample> |
|
<para>To download kdelibs from &kde; 4.6 (which is simply known as the 4.6 branch): |
|
</para> |
|
|
|
<screen> |
|
module kdelibs |
|
branch <replaceable>4.6</replaceable> |
|
# other options... |
|
end module |
|
</screen> |
|
|
|
<para>Or, to download kdemultimedia as it was released with &kde; 4.6.1:</para> |
|
|
|
<screen> |
|
module kdemultimedia |
|
tag <replaceable>4.6.1</replaceable> |
|
# other options... |
|
end module |
|
</screen> |
|
|
|
</informalexample> |
|
|
|
<tip><para>You can specify a global branch value. But if you do so, do not forget |
|
to specify a different branch for modules that should not use the global branch! |
|
</para></tip> |
|
</sect3> |
|
|
|
<sect3 id="advanced-branches"> |
|
<title>Advanced branch support options</title> |
|
|
|
<para>&kdesrc-build; supports two options for situations where &branch; and &tag; |
|
guess the correct path improperly: &module-base-path; and &override-url;. |
|
</para> |
|
|
|
<itemizedlist> |
|
<listitem><para> |
|
&module-base-path; is used to help &kdesrc-build; fill in the missing part of |
|
a module's path. In the &kde; repository, all of the paths are of the form |
|
<filename class="directory">svnRoot/module-base-path/<replaceable>module-name</replaceable></filename>. Normally &kdesrc-build; |
|
can figure out the appropriate middle part by itself. When it cannot, you can use |
|
&module-base-path;, like this: |
|
</para> |
|
|
|
<informalexample> |
|
<screen> |
|
module kdesupport |
|
# kdesupport supports various tags to easily organize the required |
|
# software for a given KDE Platform release. |
|
module-base-path tags/kdesupport-for-4.5 |
|
end module |
|
</screen> |
|
|
|
<para>This would cause &kdesrc-build; to download kdesupport from (in this example), |
|
<filename>svn://anonsvn.kde.org/home/kde/<replaceable>tags/kdesupport-for-4.5</replaceable></filename>. |
|
</para> |
|
</informalexample> |
|
<tip><para>In previous versions of &kdesrc-build;, the &module-base-path; was |
|
handled differently. If you encounter trouble using an old module-base-path |
|
definition perhaps you should verify that the actual path is as &kdesrc-build; |
|
expects by using the <link linkend="cmdline-pretend">--pretend</link> option. |
|
</para></tip> |
|
</listitem> |
|
|
|
<listitem><para>The &override-url; option, on the other hand, requires you to |
|
specify the exact path to download from. However, this allows you to pull from |
|
paths that previous versions of &kdesrc-build; would have no hope of downloading from. |
|
Currently, the &module-base-path; option should be sufficient for any Subversion |
|
source URL. |
|
</para> |
|
|
|
<important><para> |
|
&kdesrc-build; will not touch or correct the value you specify for &override-url; |
|
at all, so if you change your &svn-server; setting, you may need to update this |
|
as well. |
|
</para></important> |
|
|
|
</listitem> |
|
</itemizedlist> |
|
|
|
</sect3> |
|
|
|
</sect2> |
|
|
|
<sect2 id="building-successfully"> |
|
<title>How &kdesrc-build; tries to ensure a successful build</title> |
|
|
|
<sect3 id="automatic-rebuilds"> |
|
<title>Automatic rebuilds</title> |
|
|
|
<para>&kdesrc-build; used to include features to automatically attempt to |
|
rebuild the module after a failure (as sometimes this re-attempt would work, |
|
due to bugs in the build system at that time). Thanks to switching to &cmake; |
|
the build system no longer suffers from these bugs, and so &kdesrc-build; will |
|
not try to build a module more than once. There are situations where |
|
&kdesrc-build; will automatically take action though:</para> |
|
|
|
<itemizedlist> |
|
|
|
<listitem><para>If you change <link linkend="conf-configure-flags">configure-flags</link> |
|
or <link linkend="conf-cmake-options">cmake-options</link> for a module, then |
|
&kdesrc-build; will detect that and automatically re-run configure or cmake |
|
for that module.</para></listitem> |
|
|
|
<listitem><para>If the buildsystem does not exist (even if &kdesrc-build; did |
|
not delete it) then &kdesrc-build; will automatically re-create it. This is |
|
useful to allow for performing a full <link |
|
linkend="cmdline-refresh-build">--refresh-build</link> for a specific module |
|
without having that performed on other modules.</para></listitem> |
|
|
|
</itemizedlist> |
|
|
|
</sect3> |
|
|
|
<sect3 id="manual-rebuilds"> |
|
<title>Manually rebuilding a module</title> |
|
<para>If you make a change to a module's option settings, or the module's |
|
source code changes in a way &kdesrc-build; does not recognize, you may need to |
|
manually rebuild the module.</para> |
|
|
|
<para>You can do this by simply running <userinput><command>kdesrc-build</command> |
|
<option>--refresh-build</option> <option><replaceable>module</replaceable></option></userinput>. |
|
</para> |
|
|
|
<para>If you would like to have &kdesrc-build; automatically rebuild the module |
|
during the next normal build update instead, you can create a special file. |
|
Every module has a build directory. If you create a file called <filename>.refresh-me</filename> |
|
in the build directory for a module, &kdesrc-build; will rebuild the module |
|
next time the build process occurs, even if it would normally perform the |
|
faster incremental build.</para> |
|
|
|
<tip> |
|
<para>By default, the build directory is <filename class="directory">~/kdesrc/build/<replaceable>module</replaceable>/</filename>. |
|
If you change the setting of the &build-dir; option, then use that instead of |
|
<filename class="directory">~/kdesrc/build</filename>.</para> |
|
</tip> |
|
|
|
<informalexample> |
|
<para>Rebuild using <filename>.refresh-me</filename> for module <replaceable>kdelibs</replaceable>:</para> |
|
<screen> |
|
<prompt>%</prompt> <userinput><command>touch</command> <filename>~/kdesrc/build/<replaceable>kdelibs</replaceable>/.refresh-me</filename></userinput> |
|
<prompt>%</prompt> <userinput><command>kdesrc-build</command></userinput> |
|
</screen> |
|
</informalexample> |
|
</sect3> |
|
|
|
</sect2> |
|
|
|
<sect2 id="changing-environment"> |
|
<title>Changing environment variable settings</title> |
|
<para>Normally &kdesrc-build; uses the environment that is present when |
|
starting up when running programs to perform updates and builds. This is useful |
|
for when you are running &kdesrc-build; from the command line.</para> |
|
|
|
<para>However, you may want to change the setting for environment variables |
|
that &kdesrc-build; does not provide an option for directly. (For instance, |
|
to setup any required environment variables when running &kdesrc-build; on |
|
a timer such as &cron;) This is possible with the &set-env; option.</para> |
|
|
|
<para>Unlike most options, it can be set more than once, and it accepts two |
|
entries, separated by a space. The first one is the name of the environment |
|
variable to set, and the remainder of the line is the value.</para> |
|
|
|
<informalexample> |
|
<para>Set <userinput><envar>DISTRO</envar>=<replaceable>BSD</replaceable></userinput> |
|
for all modules:</para> |
|
<screen> |
|
global |
|
set-env <replaceable>DISTRO</replaceable> <replaceable>BSD</replaceable> |
|
end global |
|
</screen> |
|
</informalexample> |
|
|
|
</sect2> |
|
|
|
<sect2 id="resuming"> |
|
<title>Resuming builds</title> |
|
|
|
<sect3 id="resuming-failed"> |
|
<title>Resuming a failed or canceled build</title> |
|
|
|
<para>You can tell &kdesrc-build; to start building from a different module |
|
than it normally would. This can be useful when a set of modules failed, or |
|
if you canceled a build run in the middle. You can control this using the |
|
&cmd-resume-from; option and the &cmd-resume-after; option.</para> |
|
|
|
<note><para>Older versions of &kdesrc-build; would skip the source update when |
|
resuming a build. This is no longer done by default, but you can always use |
|
the <option>--no-src</option> command line option |
|
to skip the source update.</para></note> |
|
|
|
<informalexample> |
|
<para>Resuming the build starting from kdebase:</para> |
|
|
|
<screen> |
|
<prompt>%</prompt> <userinput><command>kdesrc-build</command> <option>--resume-from=<replaceable>kdebase</replaceable></option></userinput> |
|
</screen> |
|
</informalexample> |
|
|
|
<informalexample> |
|
<para>Resuming the build starting after kdebase (in case you manually fixed |
|
the issue and installed the module yourself):</para> |
|
|
|
<screen> |
|
<prompt>%</prompt> <userinput><command>kdesrc-build</command> <option>--resume-after=<replaceable>kdebase</replaceable></option></userinput> |
|
</screen> |
|
</informalexample> |
|
|
|
</sect3> |
|
|
|
<sect3 id="ignoring-modules"> |
|
<title>Ignoring modules in a build</title> |
|
|
|
<para>Similar to the way you can <link linkend="resuming-failed">resume the |
|
build from a module</link>, you can instead choose to update and build everything |
|
normally, but ignore a set of modules.</para> |
|
|
|
<para>You can do this using the &cmd-ignore-modules; option. This option tells |
|
&kdesrc-build; to ignore all the modules on the command line when |
|
performing the update and build.</para> |
|
|
|
<informalexample> |
|
<para>Ignoring extragear/multimedia and kdereview during a full run:</para> |
|
<screen> |
|
<prompt>%</prompt> <userinput><command>kdesrc-build</command> <option>--ignore-modules</option> <replaceable>extragear/multimedia kdereview</replaceable></userinput> |
|
</screen> |
|
</informalexample> |
|
|
|
</sect3> |
|
</sect2> |
|
|
|
<sect2 id="changing-env-from-cmd-line"> |
|
<title>Changing options from the command line</title> |
|
|
|
<sect3 id="changing-global-opts"> |
|
<title>Changing global options</title> |
|
<para>You can change the setting of options read from the <link linkend="configure-data">configuration file</link> directly |
|
from the command line. This change will override the configuration file |
|
setting, but is only temporary. It only takes effect as long as it is still |
|
present on the command line.</para> |
|
|
|
<para>&kdesrc-build; allows you to change options named like <replaceable>option-name</replaceable> |
|
by passing an argument on the command line in the form <userinput><option>--<replaceable>option-name</replaceable>=value</option></userinput>. |
|
&kdesrc-build; will recognize whether it does not know what the option is, and search |
|
for the name in its list of option names. If it does not recognize the name, it |
|
will warn you, otherwise it will remember the value you set it to and override |
|
any setting from the configuration file.</para> |
|
|
|
<informalexample> |
|
<para>Setting the &source-dir; option to <filename>/dev/null</filename> for |
|
testing:</para> |
|
|
|
<screen> |
|
<prompt>%</prompt> <userinput><command>kdesrc-build</command> <option>--pretend</option> <option>--<replaceable>source-dir</replaceable>=<replaceable>/dev/null</replaceable></option></userinput> |
|
</screen> |
|
|
|
</informalexample> |
|
|
|
</sect3> |
|
|
|
<sect3 id="changing-module-opts"> |
|
<title>Changing module options</title> |
|
<para>It is also possible to change options only for a specific module. The |
|
syntax is similar: --<replaceable>module</replaceable>,<replaceable>option-name</replaceable>=<replaceable>value</replaceable>. |
|
</para> |
|
|
|
<para>This change overrides any duplicate setting for the module found in the |
|
<link linkend="configure-data">configuration file</link>, and applies only while the option is passed on the command line.</para> |
|
|
|
<informalexample> |
|
<para>Using a different build directory for the kdeedu module:</para> |
|
|
|
<screen> |
|
<prompt>%</prompt> <userinput><command>kdesrc-build</command> <option>--<replaceable>kdeedu</replaceable>,<replaceable>build-dir</replaceable>=<replaceable>temp-build</replaceable></option></userinput> |
|
</screen> |
|
|
|
</informalexample> |
|
|
|
</sect3> |
|
|
|
</sect2> |
|
|
|
</sect1> |
|
|
|
<sect1 id="developer-features"> |
|
<title>Features for &kde; developers</title> |
|
|
|
<sect2 id="ssh-agent-reminder"> |
|
<title>&ssh; Agent checks</title> |
|
<para>&kdesrc-build; can ensure that &kde; developers that use &ssh; to |
|
access the &kde; source repository do not accidentally forget to leave the |
|
&ssh; Agent tool enabled. This can cause &kdesrc-build; to hang indefinitely |
|
waiting for the developer to type in their &ssh; password, |
|
so by default &kdesrc-build; will check if the Agent is running before |
|
performing source updates. |
|
</para> |
|
|
|
<note><para>This is only done for &kde; developers using &ssh;. This is because |
|
no password is required for the default anonymous checkout. &subversion; will |
|
handle passwords for the second possible protocol for &kde; developers, https. |
|
</para></note> |
|
|
|
<para>You may wish to disable the &ssh; Agent check, in case of situations where |
|
&kdesrc-build; is mis-detecting the presence of an agent. To disable the |
|
agent check, set the <option>disable-agent-check</option> option to |
|
<userinput>true</userinput>.</para> |
|
|
|
<informalexample> |
|
<para>Disabling the &ssh; agent check:</para> |
|
<screen> |
|
global |
|
disable-agent-check true |
|
end global |
|
</screen> |
|
</informalexample> |
|
|
|
</sect2> |
|
|
|
</sect1> |
|
|
|
<sect1 id="other-features"> |
|
<title>Other &kdesrc-build; features</title> |
|
|
|
<sect2 id="changing-verbosity"> |
|
<title>Changing the amount of output from &kdesrc-build;</title> |
|
<para>&kdesrc-build; has several options to control the amount of output the |
|
script generates. In any case, errors will always be output.</para> |
|
|
|
<itemizedlist> |
|
<listitem><para>The <option>--quiet</option> option (short form is |
|
<option>-q</option>) causes &kdesrc-build; to be mostly silent. Only important |
|
messages, warnings, or errors will be shown. When available, build progress |
|
information is still shown.</para></listitem> |
|
|
|
<listitem><para>The <option>--really-quiet</option> option (no short form) |
|
causes &kdesrc-build; to only display important warnings or errors while it is |
|
running.</para></listitem> |
|
|
|
<listitem><para>The <option>--verbose</option> option (short form is |
|
<option>-v</option>) causes &kdesrc-build; to be very detailed in its |
|
output.</para></listitem> |
|
|
|
<listitem><para>The <option>--debug</option> option is for debugging purposes |
|
only, it causes &kdesrc-build; to act as if <option>--verbose</option> was |
|
turned on, causes commands to also output to the terminal, and will display |
|
debugging information for many functions.</para></listitem> |
|
</itemizedlist> |
|
|
|
</sect2> |
|
|
|
<sect2 id="kdesrc-build-color"> |
|
<title>Color output</title> |
|
<para>When being run from &konsole; or a different terminal, &kdesrc-build; |
|
will normally display with colorized text.</para> |
|
|
|
<para>You can disable this by using the <option>--no-color</option> on the |
|
command line, or by setting the &colorful-output; option in the <link linkend="configure-data">configuration file</link> to |
|
<userinput>false</userinput>. |
|
</para> |
|
|
|
<informalexample> |
|
<para>Disabling color output in the configuration file:</para> |
|
<screen> |
|
global |
|
colorful-output false |
|
end global |
|
</screen> |
|
</informalexample> |
|
|
|
</sect2> |
|
|
|
<sect2 id="deleting-build-dir"> |
|
<title>Removing unneeded directories after a build</title> |
|
<para>Are you short on disk space but still want to run a bleeding-edge |
|
&kde; checkout? &kdesrc-build; can help reduce your disk usage when building |
|
&kde; from &subversion;.</para> |
|
|
|
<note><para>Be aware that building &kde; does take a lot of space. There are |
|
several major space-using pieces when using &kdesrc-build;:</para></note> |
|
|
|
<orderedlist> |
|
<listitem><para>The actual source checkout can take up a fair amount of space. |
|
The default modules take up about 1.6 gigabytes of on-disk space. You can reduce |
|
this amount by making sure that you are only building as many modules as you |
|
actually want. &kdesrc-build; will not delete source code from disk even if you |
|
delete the entry from the <link linkend="configure-data">configuration file</link>, so make sure that you go and delete unused |
|
source checkouts from the source directory. Note that the source files are |
|
downloaded from the Internet, you <emphasis>should not</emphasis> delete them |
|
if you are actually using them, at least until you are done using |
|
&kdesrc-build;.</para> |
|
|
|
<para>Also, if you already have a &Qt; installed by your distribution (and |
|
the odds are good that you do), you probably do not need to install the |
|
qt module. That will shave about 200 megabytes off of the on-disk source |
|
size.</para> |
|
|
|
<para>One thing to note is that due to the way &subversion; works: there are actually |
|
two files on disk for every file checked-out from the repository. &kdesrc-build; |
|
does not have code at this point to try and minimize the source size when the |
|
source is not being used. |
|
</para> |
|
</listitem> |
|
|
|
<listitem> |
|
<para>&kdesrc-build; will create a separate build directory to build the source |
|
code in. Sometimes &kdesrc-build; will have to copy a source directory to |
|
create a fake build directory. When this happens, space-saving symlinks are |
|
used, so this should not be a hassle on disk space. The build directory will |
|
typically be much larger than the source directory for a module. For example, |
|
the build directory for kdebase is about 1050 megabytes, whereas kdebase's |
|
source is only around 550 megabytes.</para> |
|
|
|
<para>Luckily, the build directory is not required after a module has |
|
successfully been built and installed. &kdesrc-build; can automatically |
|
remove the build directory after installing a module, see the examples below |
|
for more information. Note that taking this step will make it impossible |
|
for &kdesrc-build; to perform the time-saving incremental builds.</para> |
|
</listitem> |
|
|
|
<listitem><para> |
|
Finally, there is disk space required for the actual installation of |
|
&kde;, which does not run from the build directory. This typically takes less |
|
space than the build directory. It is harder to get exact figures however. |
|
</para></listitem> |
|
</orderedlist> |
|
|
|
<para>How do you reduce the space requirements of &kde;? One way is to |
|
use the proper compiler flags, to optimize for space reduction instead of |
|
for speed. Another way, which can have a large effect, is to remove debugging |
|
information from your &kde; build. |
|
</para> |
|
|
|
<warning><para> |
|
You should be very sure you know what you are doing before deciding to remove |
|
debugging information. Running bleeding-edge software means you are running |
|
software which is potentially much more likely to crash than a stable release. |
|
If you are running software without debugging information, it can be very |
|
hard to create a good bug report to get your bug resolved, and you will likely |
|
have to re-enable debugging information for the affected application and |
|
rebuild to help a developer fix the crash. So, remove debugging information |
|
at your own risk! |
|
</para></warning> |
|
|
|
<informalexample> |
|
<para>Removing the build directory after installation of a module. The source |
|
directory is still kept, and debugging is enabled:</para> |
|
|
|
<screen> |
|
global |
|
configure-flags --enable-debug |
|
remove-after-install builddir # Remove build directory after install |
|
end global |
|
</screen> |
|
|
|
<para>Removing the build directory after installation, without debugging |
|
information, with size optimization.</para> |
|
|
|
<screen> |
|
global |
|
cxxflags -Os # Optimize for size |
|
configure-flags --disable-debug |
|
remove-after-install builddir # Remove build directory after install |
|
end global |
|
</screen> |
|
</informalexample> |
|
</sect2> |
|
|
|
</sect1> |
|
|
|
</chapter> |
|
|
|
<chapter id="kde-cmake"> |
|
<title>&cmake;, the &kde; 4 build system</title> |
|
|
|
<sect1 id="kde-cmake-intro"> |
|
<title>Introduction to &cmake;</title> |
|
|
|
<para>In March 2006, the &cmake; program |
|
beat out several competitors and was selected to be the build system for &kde; 4, replacing the |
|
autotools-based system that &kde; has used from the beginning.</para> |
|
|
|
<para>A introduction to &cmake; page is available on the <ulink |
|
url="http://techbase.kde.org/Development/Tutorials/CMake">&kde; TechBase</ulink>. |
|
Basically, instead of running <userinput><command>make</command> <option>-f</option> |
|
<filename>Makefile.cvs</filename></userinput>, then <command>configure</command>, |
|
then &make;, we simply run &cmake; and then &make;. |
|
</para> |
|
|
|
<para>&kdesrc-build; has support for &cmake;. A few features of &kdesrc-build; |
|
were really features of the underlying buildsystem, including |
|
<link linkend="conf-configure-flags">configure-flags</link> |
|
and <link linkend="conf-do-not-compile">do-not-compile</link>. When equivalent |
|
features are available, they are provided. For instance, the equivalent to the |
|
configure-flags option is <link linkend="conf-cmake-options">cmake-options</link>, and the |
|
<link linkend="conf-do-not-compile">do-not-compile</link> option is also supported for &cmake; |
|
as of &kdesrc-build; version 1.6.3. |
|
</para> |
|
|
|
</sect1> |
|
</chapter> |
|
|
|
<chapter id="credits-and-license"> |
|
<title>Credits And License</title> |
|
|
|
<!-- TRANS:CREDIT_FOR_TRANSLATORS --> |
|
&underFDL; |
|
|
|
</chapter> |
|
|
|
<appendix id="appendix-modules"> |
|
<title>&kde; modules and source code organization</title> |
|
<sect1 id="module-concept"> |
|
<title>The <quote>Module</quote></title> |
|
|
|
<para>&kde; groups its software into <quote>modules</quote> of various size. |
|
This was initially a loose grouping of a few large modules, but with the |
|
introduction of the <ulink url="http://git-scm.com/">Git</ulink>-based <ulink |
|
url="https://projects.kde.org/">source code repositories</ulink>, these large |
|
modules were further split into many smaller modules. |
|
</para> |
|
|
|
<para>&kdesrc-build; uses this module concept as well. In essence, a |
|
<quote>module</quote> is a grouping of code that can be downloaded, built, |
|
tested, and installed. |
|
</para> |
|
|
|
<sect2 id="single-modules"> |
|
<title>Individual modules</title> |
|
|
|
<para>It is easy to set &kdesrc-build; to build a single module. The following |
|
listing is an example of what a declaration for a Subversion-based module would |
|
look like in <link linkend="kdesrc-buildrc">the configuration |
|
file</link>.</para> |
|
|
|
<programlisting> |
|
module <replaceable>kdefoo</replaceable> |
|
<option><replaceable>cmake-options -DCMAKE_BUILD_TYPE=Debug</replaceable></option> |
|
end module |
|
</programlisting> |
|
|
|
<tip><para>This is a Subversion-based module since it doesn't use a <link |
|
linkend="conf-repository">repository</link> option. Also, the |
|
<option>cmake-options</option> option is listed as an example only, it is not |
|
required.</para></tip> |
|
|
|
</sect2> |
|
<sect2 id="module-groups"> |
|
<title>Groups of related modules</title> |
|
|
|
<para>Now most &kde; source modules are Git-based &kde;, and are normally |
|
combined into groups of modules.</para> |
|
|
|
<para>&kdesrc-build; therefore supports groups of modules as well, using |
|
<link linkend="module-sets">module sets</link>. An example:</para> |
|
|
|
<programlisting> |
|
module-set <replaceable>base-modules</replaceable> |
|
<option>repository</option> kde-projects |
|
<option>use-modules</option> <replaceable>kde-runtime kde-workspace kde-baseapps</replaceable> |
|
end module-set |
|
</programlisting> |
|
|
|
<tip><para>You can leave the module set name (<replaceable>base-modules</replaceable> |
|
in this case) empty if you like. This <option>repository</option> setting tells |
|
&kdesrc-build; where to download the source from, but you can also use a |
|
<symbol>git://</symbol> URL.</para></tip> |
|
|
|
<para>One special feature of the <quote><option>repository</option> |
|
<literal>kde-projects</literal></quote> is that &kdesrc-build; will |
|
automatically include any Git modules that are grouped under the modules you |
|
list (in the KDE Project database).</para> |
|
</sect2> |
|
|
|
<sect2 id="module-branch-groups"> |
|
<title>Module <quote>branch groups</quote></title> |
|
|
|
<para>Taking the concept of a <link linkend="module-groups">group of |
|
modules</link> further, the &kde; developers eventually found that |
|
synchronizing the names of the Git branches across a large number of |
|
repositories was getting difficult, especially during the development push for |
|
the new &kde; Frameworks for &Qt; 5. |
|
</para> |
|
|
|
<para>So the concept of <quote>branch groups</quote> was developed, to allow |
|
users and developers to select one of only a few groups, and allow the script |
|
to automatically select the appropriate Git branch. |
|
</para> |
|
|
|
<para>&kdesrc-build; supports this feature as of version 1.16-pre2, via the |
|
<link linkend="conf-branch-group">branch-group</link> option. |
|
</para> |
|
|
|
<example id="ex-branch-group"> |
|
<title>Example of using branch-group</title> |
|
|
|
<para>branch-group can be used in the configuration file as follows: |
|
</para> |
|
|
|
<programlisting> |
|
global |
|
# Select KDE Frameworks 5 and other Qt5-based apps |
|
<option>branch-group</option> <replaceable>kf5-qt5</replaceable> |
|
|
|
# Other global options here ... |
|
end global |
|
|
|
module-set |
|
# branch-group only works for kde-projects |
|
<option>repository</option> kde-projects |
|
|
|
# branch-group is inherited from the one set globally, but could |
|
# specified here. |
|
|
|
<option>use-modules</option> <replaceable>kdelibs kde-workspace</replaceable> |
|
end module-set |
|
|
|
# kdelibs's branch will be "frameworks" |
|
# kde-workspace's branch will be "master" (as of August 2013) |
|
</programlisting> |
|
|
|
<para>In this case the same <literal>branch-group</literal> gives different |
|
branch names for each Git module. |
|
</para> |
|
</example> |
|
|
|
<para>This feature requires some data maintained by the &kde; developers in a Git |
|
repository named <literal>kde-build-metadata</literal>, however this module |
|
will be included automatically by &kdesrc-build; (though you may see it appear |
|
in the script output). |
|
</para> |
|
|
|
<tip><para>&kde; modules that do not have a set branch name for the branch |
|
group you choose will default to an appropriate branch name, as if you had not |
|
specified <literal>branch-group</literal> at all. |
|
</para></tip> |
|
|
|
</sect2> |
|
|
|
</sect1> |
|
</appendix> |
|
|
|
<appendix id="appendix-profile"> |
|
<title>Superseded profile setup procedures</title> |
|
|
|
<sect1 id="old-profile-setup"> |
|
<title>Setting up a &kde; login profile</title> |
|
|
|
<para>These instructions cover how to setup the profile required to ensure your |
|
computer can login to your newly-built &kde; &plasma; desktop. &kdesrc-build; |
|
will normally try to do this automatically (see <xref |
|
linkend="session-driver"/>). This appendix section can be useful for those who |
|
cannot use &kdesrc-build;'s support for login profile setup. However the |
|
instructions may not always be up-to-date, it can also be useful to consult the |
|
<filename>kde-env-master.sh</filename> file included with the &kdesrc-build; |
|
source.</para> |
|
|
|
<sect2 id="changing-profile"> |
|
<title>Changing your startup profile settings</title> |
|
|
|
<important><para>The <filename>.bash_profile</filename> is the login settings |
|
file for the popular <application>bash</application> shell used by many &Linux; |
|
distributions. If you use a different shell, then you may need to adjust the |
|
samples given in this section for your particular shell.</para></important> |
|
|
|
<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: |
|
|
|
If you are building the qt module (you are by default), add instead: |
|
|
|
<programlisting> |
|
QTDIR=(path to qtdir) # Such as ~/kdesrc/build/qt by default. |
|
KDEDIR=(path to kdedir) # Such as ~/kde by default. |
|
KDEDIRS=$KDEDIR |
|
PATH=$KDEDIR/bin:$QTDIR/bin:$PATH |
|
MANPATH=$QTDIR/doc/man:$MANPATH |
|
|
|
# Act appropriately if LD_LIBRARY_PATH is not already set. |
|
if [ -z $LD_LIBRARY_PATH ]; then |
|
LD_LIBRARY_PATH=$KDEDIR/lib:$QTDIR/lib |
|
else |
|
LD_LIBRARY_PATH=$KDEDIR/lib:$QTDIR/lib:$LD_LIBRARY_PATH |
|
fi |
|
|
|
export QTDIR KDEDIRS PATH MANPATH LD_LIBRARY_PATH |
|
</programlisting> |
|
|
|
or, if you are not building qt (and are using your system &Qt; instead), add |
|
this instead: |
|
|
|
<programlisting> |
|
KDEDIR=(path to kdedir) # Such as ~/kde by default. |
|
KDEDIRS=$KDEDIR |
|
PATH=$KDEDIR/bin:$QTDIR/bin:$PATH |
|
|
|
# Act appropriately if LD_LIBRARY_PATH is not already set. |
|
if [ -z $LD_LIBRARY_PATH ]; then |
|
LD_LIBRARY_PATH=$KDEDIR/lib |
|
else |
|
LD_LIBRARY_PATH=$KDEDIR/lib:$LD_LIBRARY_PATH |
|
fi |
|
|
|
export KDEDIRS PATH 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 ] && mkdir ~/.kde-svn |
|
</programlisting> |
|
</para> |
|
|
|
<note> |
|
<para> |
|
If later your K Menu is empty or too crowded with applications from your |
|
distribution, you may have to set the <acronym>XDG</acronym> 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> |
|
|
|
</sect2> |
|
<sect2 id="starting-kde"> |
|
<title>Starting &kde;</title> |
|
|
|
<para> |
|
Now that you have adjusted your environment settings to use the correct &kde;, |
|
it is important to ensure that the correct <command>startkde</command> script |
|
is used as well. |
|
</para> |
|
|
|
<para> |
|
Open the <filename>.xinitrc</filename> text file from the home directory, or |
|
create it if necessary. Add the line: |
|
|
|
<programlisting> |
|
<command>exec</command> <option>${KDEDIR}/bin/startkde</option> |
|
</programlisting> |
|
</para> |
|
|
|
<important><para>On some distributions, it may be necessary to perform the same |
|
steps with the <filename>.xsession</filename> file, also in the home directory. |
|
This is especially true when using graphical login managers such as |
|
&kdm;, <application>gdm</application>, or <application>xdm</application>.</para> |
|
</important> |
|
|
|
<para> |
|
Now start your fresh &kde;: in &BSD; and &Linux; systems with virtual terminal support, |
|
<keycombo action="simul">&Ctrl;&Alt;<keycap>F1</keycap></keycombo> ... <keycombo action="simul">&Ctrl;&Alt;<keycap>F12</keycap></keycombo> 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 start your computer 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. Most display managers, including &kdm;, have an option to use |
|
a <quote>Custom Session</quote> when you login. With this option, your session settings are |
|
loaded from the <filename>.xsession</filename> file in your home directory. If |
|
you have already modified this file as described above, this option should load |
|
you into your new &kde; installation. |
|
</para> |
|
|
|
<para>If it does not, there is something else you can try that should normally |
|
work: Press <keycombo action="simul">&Ctrl;&Alt;<keycap>F2</keycap></keycombo>, |
|
and you will be presented to a text terminal. Log in using the dedicated user |
|
and type: |
|
</para> |
|
|
|
<screen> |
|
<command>startx</command> <option>--</option> <option>:1</option> |
|
</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 <keycombo |
|
action="simul">&Ctrl;&Alt;<keycap>F2</keycap></keycombo> (or |
|
<keycap>F1</keycap>, <keycap>F3</keycap>, etc..), and you will be presented |
|
with a text terminal. Log in using the dedicated &kde; &subversion; user and |
|
type:</para> |
|
|
|
<screen> |
|
<command>startx</command> <option>--</option> <option>:1</option> |
|
</screen> |
|
|
|
<para>You can go back to the &kde; desktop of your regular user by pressing the |
|
shortcut key for the already running desktop. This is normally |
|
<keycombo action="simul">&Ctrl;&Alt;<keycap>F7</keycap></keycombo>, you may need |
|
to use <keycap>F6</keycap> or <keycap>F8</keycap> instead. To return to your |
|
&kdesrc-build;-compiled &kde;, you would use the same sequence, except with the |
|
next function key. For example, if you needed to enter <keycombo action="simul">&Ctrl;&Alt;<keycap>F7</keycap></keycombo> |
|
to switch to your regular &kde;, you would need to enter |
|
<keycombo action="simul">&Ctrl;&Alt;<keycap>F8</keycap></keycombo> to go back |
|
to your &kdesrc-build; &kde;.</para> |
|
</tip> |
|
|
|
</sect2> |
|
</sect1> |
|
|
|
</appendix> |
|
</book>
|
|
|