mirror of
https://gitlab.com/fdroid/fdroidserver.git
synced 2024-11-14 11:00:10 +01:00
1339 lines
60 KiB
HTML
1339 lines
60 KiB
HTML
<html lang="en">
|
|
<head>
|
|
<title>F-Droid Server Manual</title>
|
|
<meta http-equiv="Content-Type" content="text/html">
|
|
<meta name="description" content="F-Droid Server Manual">
|
|
<meta name="generator" content="makeinfo 4.13">
|
|
<link title="Top" rel="top" href="#Top">
|
|
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
|
<!--
|
|
This manual is for the F-Droid repository server tools.
|
|
|
|
Copyright (C) 2010, 2011, 2012 Ciaran Gultnieks
|
|
Copyright (C) 2011 Henrik Tunedal, Michael Haas, John Sullivan
|
|
|
|
Permission is granted to copy, distribute and/or modify this
|
|
document under the terms of the GNU Free Documentation License,
|
|
Version 1.3 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 the
|
|
section entitled "GNU Free Documentation License".
|
|
-->
|
|
<meta http-equiv="Content-Style-Type" content="text/css">
|
|
<style type="text/css"><!--
|
|
pre.display { font-family:inherit }
|
|
pre.format { font-family:inherit }
|
|
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
|
pre.smallformat { font-family:inherit; font-size:smaller }
|
|
pre.smallexample { font-size:smaller }
|
|
pre.smalllisp { font-size:smaller }
|
|
span.sc { font-variant:small-caps }
|
|
span.roman { font-family:serif; font-weight:normal; }
|
|
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
|
--></style>
|
|
</head>
|
|
<body>
|
|
<h1 class="settitle">F-Droid Server Manual</h1>
|
|
<div class="contents">
|
|
<h2>Table of Contents</h2>
|
|
<ul>
|
|
<li><a name="toc_Top" href="#Top">F-Droid Server</a>
|
|
<li><a name="toc_Overview" href="#Overview">1 Overview</a>
|
|
<li><a name="toc_System-Requirements" href="#System-Requirements">2 System Requirements</a>
|
|
<li><a name="toc_Setup" href="#Setup">3 Setup</a>
|
|
<li><a name="toc_Simple-Binary-Repository" href="#Simple-Binary-Repository">4 Simple Binary Repository</a>
|
|
<li><a name="toc_Building-Applications" href="#Building-Applications">5 Building Applications</a>
|
|
<ul>
|
|
<li><a href="#Building-Applications">5.1 More about build.py</a>
|
|
</li></ul>
|
|
<li><a name="toc_Metadata" href="#Metadata">6 Metadata</a>
|
|
<ul>
|
|
<li><a href="#License">6.1 License</a>
|
|
<li><a href="#Name">6.2 Name</a>
|
|
<li><a href="#Web-Site">6.3 Web Site</a>
|
|
<li><a href="#Source-Code">6.4 Source Code</a>
|
|
<li><a href="#Issue-Tracker">6.5 Issue Tracker</a>
|
|
<li><a href="#Donate">6.6 Donate</a>
|
|
<li><a href="#Summary">6.7 Summary</a>
|
|
<li><a href="#Description">6.8 Description</a>
|
|
<li><a href="#Repo-Type">6.9 Repo Type</a>
|
|
<li><a href="#Repo">6.10 Repo</a>
|
|
<li><a href="#Build-Version">6.11 Build Version</a>
|
|
<li><a href="#AntiFeatures">6.12 AntiFeatures</a>
|
|
<li><a href="#Disabled">6.13 Disabled</a>
|
|
<li><a href="#Requires-Root">6.14 Requires Root</a>
|
|
</li></ul>
|
|
<li><a name="toc_Build-Server" href="#Build-Server">7 Build Server</a>
|
|
<ul>
|
|
<li><a href="#Build-Server">7.1 Rationale</a>
|
|
<li><a href="#Build-Server">7.2 Setting up a build server</a>
|
|
</li></ul>
|
|
<li><a name="toc_GNU-Free-Documentation-License" href="#GNU-Free-Documentation-License">Appendix A GNU Free Documentation License</a>
|
|
<li><a name="toc_Index" href="#Index">Index</a>
|
|
</li></ul>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="node">
|
|
<a name="Top"></a>
|
|
<p><hr>
|
|
Next: <a rel="next" accesskey="n" href="#Overview">Overview</a>,
|
|
Up: <a rel="up" accesskey="u" href="#dir">(dir)</a>
|
|
|
|
</div>
|
|
|
|
<h2 class="unnumbered">F-Droid Server</h2>
|
|
|
|
<p>This manual is for the F-Droid repository server tools.
|
|
|
|
<p>Copyright © 2010, 2011, 2012 Ciaran Gultnieks
|
|
Copyright © 2011 Henrik Tunedal, Michael Haas, John Sullivan
|
|
|
|
<blockquote>
|
|
Permission is granted to copy, distribute and/or modify this document
|
|
under the terms of the GNU Free Documentation License, Version 1.3
|
|
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 the section entitled "GNU
|
|
Free Documentation License".
|
|
</blockquote>
|
|
|
|
<ul class="menu">
|
|
<li><a accesskey="1" href="#Overview">Overview</a>
|
|
<li><a accesskey="2" href="#System-Requirements">System Requirements</a>
|
|
<li><a accesskey="3" href="#Setup">Setup</a>
|
|
<li><a accesskey="4" href="#Simple-Binary-Repository">Simple Binary Repository</a>
|
|
<li><a accesskey="5" href="#Building-Applications">Building Applications</a>
|
|
<li><a accesskey="6" href="#Metadata">Metadata</a>
|
|
<li><a accesskey="7" href="#Build-Server">Build Server</a>
|
|
<li><a accesskey="8" href="#GNU-Free-Documentation-License">GNU Free Documentation License</a>
|
|
<li><a accesskey="9" href="#Index">Index</a>
|
|
</ul>
|
|
|
|
<div class="node">
|
|
<a name="Overview"></a>
|
|
<p><hr>
|
|
Next: <a rel="next" accesskey="n" href="#System-Requirements">System Requirements</a>,
|
|
Previous: <a rel="previous" accesskey="p" href="#Top">Top</a>,
|
|
Up: <a rel="up" accesskey="u" href="#Top">Top</a>
|
|
|
|
</div>
|
|
|
|
<h2 class="chapter">1 Overview</h2>
|
|
|
|
<p>The F-Droid server tools provide various scripts, tools and data that are used
|
|
to maintain the main F-Droid application repository. You can use these same
|
|
tools to create your own additional or alternative repository for publishing,
|
|
or to assist in creating, testing and submitting metadata to the main
|
|
repository.
|
|
|
|
<div class="node">
|
|
<a name="System-Requirements"></a>
|
|
<p><hr>
|
|
Next: <a rel="next" accesskey="n" href="#Setup">Setup</a>,
|
|
Previous: <a rel="previous" accesskey="p" href="#Overview">Overview</a>,
|
|
Up: <a rel="up" accesskey="u" href="#Top">Top</a>
|
|
|
|
</div>
|
|
|
|
<h2 class="chapter">2 System Requirements</h2>
|
|
|
|
<p><a name="index-installation-1"></a>
|
|
The system requirements for using the tools will vary depending on your
|
|
intended usage. At the very least, you'll need:
|
|
|
|
<ul>
|
|
<li>GNU/Linux
|
|
<li>Python 2.x
|
|
<li>The Android SDK
|
|
</ul>
|
|
|
|
<p>If you intend to build applications from source you'll also need most, if not
|
|
all, of the following:
|
|
|
|
<ul>
|
|
<li>All available SDK platforms and tools installed in the Android SDK, but *not*
|
|
the proprietary components.
|
|
<li>The Android NDK
|
|
<li>Ant
|
|
<li>Ant Contrib Tasks (Debian package ant-contrib)
|
|
<li>Maven (Debian package maven2)
|
|
<li>JavaCC (Debian package javacc)
|
|
<li>JDK (Debian package openjdk-6-jdk)
|
|
<li>VCS clients: svn, git, hg, bzr
|
|
<li>A keystore for holding release keys. (Safe, secure and well backed up!)
|
|
</ul>
|
|
|
|
<p>If you intend to use the 'Build Server' system, for secure and clean builds
|
|
(highly recommended), you will also need:
|
|
|
|
<ul>
|
|
<li>VirtualBox (debian package virtualbox-ose)
|
|
<li>Ruby
|
|
<li>Vagrant and Vagrant-snap
|
|
<li>Paramiko (debian package python-paramiko)
|
|
</ul>
|
|
|
|
<div class="node">
|
|
<a name="Setup"></a>
|
|
<p><hr>
|
|
Next: <a rel="next" accesskey="n" href="#Simple-Binary-Repository">Simple Binary Repository</a>,
|
|
Previous: <a rel="previous" accesskey="p" href="#System-Requirements">System Requirements</a>,
|
|
Up: <a rel="up" accesskey="u" href="#Top">Top</a>
|
|
|
|
</div>
|
|
|
|
<h2 class="chapter">3 Setup</h2>
|
|
|
|
<p><a name="index-setup_002c-installation-2"></a>
|
|
Because the tools and data will always change rapidly, you will almost
|
|
certainly want to work from a git clone of the tools, which are designed to
|
|
work in this way, with all associated data in a pre-defined directory
|
|
structure below the main one. To get started:
|
|
|
|
<pre class="example"> git clone git://gitorious.org/f-droid/fdroidserver.git
|
|
cd fdroidserver
|
|
</pre>
|
|
<p>You will now be in the root directory of the tools. All the tasks associated
|
|
with managing the repository and data are done from here.
|
|
|
|
<p>Regardless of the intended usage of the tools, you will always need to set
|
|
up some basic configuration details. This is done by creating a file called
|
|
<code>config.py</code> which you should do by copying from <code>config.sample.py</code>
|
|
and then editing according to the instructions within.
|
|
|
|
<div class="node">
|
|
<a name="Simple-Binary-Repository"></a>
|
|
<p><hr>
|
|
Next: <a rel="next" accesskey="n" href="#Building-Applications">Building Applications</a>,
|
|
Previous: <a rel="previous" accesskey="p" href="#Setup">Setup</a>,
|
|
Up: <a rel="up" accesskey="u" href="#Top">Top</a>
|
|
|
|
</div>
|
|
|
|
<h2 class="chapter">4 Simple Binary Repository</h2>
|
|
|
|
<p><a name="index-binary-3"></a>
|
|
If you want to maintain a simple repository hosting only binary APKs obtained
|
|
and compiled elsewhere, the process is quite simple:
|
|
|
|
<ol type=1 start=1>
|
|
<li>Make a repo directory and put APK files in it.
|
|
<li>Run <code>update.py</code>.
|
|
<li>If it reports that any metadata files are missing, you can create them
|
|
in the <code>metadata</code> directory and run it again.
|
|
<li>To ease creation of metadata files, run <code>update.py</code> with the <code>-c</code>
|
|
option. It will create 'skeleton' metadata files that are missing, and you can
|
|
then just edit them and fill in the details.
|
|
<li>Then, if you've changed things, run <code>update.py</code> again.
|
|
<li>Running <code>update.py</code> adds an Icons directory into the repo directory, and
|
|
also creates the repository index (index.xml, and also index.jar if you've
|
|
configured the system to use a signed index).
|
|
</ol>
|
|
|
|
<p>Following the above process will result in a <code>repo</code> directory, which you
|
|
simply need to push to any HTTP (or preferably HTTPS) server to make it
|
|
accessible.
|
|
|
|
<p>While some information about the applications (and versions thereof) is
|
|
retrieved directly from the APK files, most comes from the corresponding file
|
|
in the <code>metadata</code> directory. The metadata file covering ALL versions of a
|
|
particular application is named <code>package.id.txt</code> where package.id is the
|
|
unique identifier for that package.
|
|
|
|
<p>See the Metadata chapter for details of what goes in the metadata file. All
|
|
fields are relevant for binary APKs, EXCEPT for 'Build Version' entries, which
|
|
should be omitted.
|
|
|
|
<div class="node">
|
|
<a name="Building-Applications"></a>
|
|
<p><hr>
|
|
Next: <a rel="next" accesskey="n" href="#Metadata">Metadata</a>,
|
|
Previous: <a rel="previous" accesskey="p" href="#Simple-Binary-Repository">Simple Binary Repository</a>,
|
|
Up: <a rel="up" accesskey="u" href="#Top">Top</a>
|
|
|
|
</div>
|
|
|
|
<h2 class="chapter">5 Building Applications</h2>
|
|
|
|
<p>Instead of (or as well as) including binary APKs from external sources in a
|
|
repository, you can build them directly from the source code.
|
|
|
|
<p>Using this method, it is is possible to verify that the application builds
|
|
correctly, corresponds to the source code, and contains only free software.
|
|
Unforunately, in the Android world, it seems to be very common for an
|
|
application supplied as a binary APK to present itself as Free Software
|
|
when in fact some or all of the following are true:
|
|
|
|
<ol type=1 start=1>
|
|
<li>The source code (either for a particular version, or even all versions!) is
|
|
unavailable or incomplete.
|
|
<li>The source code is not capable of producing the actual binary supplied.
|
|
<li>The 'source code' contains binary files of unknown origin, or with proprietary
|
|
licenses.
|
|
</ol>
|
|
|
|
<p>For this reason, source-built applications are the preferred method for the
|
|
main F-Droid repository, although occasionally for technical or historical
|
|
reasons, exceptions are made to this policy.
|
|
|
|
<p>When building applications from source, it should be noted that you will be
|
|
signing them (all APK files must be signed to be installable on Android) with
|
|
your own key. When an application is already installed on a device, it is not
|
|
possible to upgrade it in place to a new version signed with a different key
|
|
without first uninstalling the original. This may present an inconvenience to
|
|
users, as the process of uninstalling loses any data associated with the
|
|
previous installation.
|
|
|
|
<p>The process for managing a repository for built-from-source applications is
|
|
very similar to that described in the Simple Binary Repository chapter,
|
|
except now you need to:
|
|
|
|
<ol type=1 start=1>
|
|
<li>Include Build Version entries in the metadata files.
|
|
<li>Run build.py to build any applications that are not already built.
|
|
<li>Run publish.py to finalise packaging and sign any APKs that have been built.
|
|
</ol>
|
|
|
|
<h3 class="section">5.1 More about build.py</h3>
|
|
|
|
<p>When run without any parameters, build.py will build any and all versions of
|
|
applications that you don't already have in the <code>repo</code> directory (or more
|
|
accurately, the <code>unsigned</code> directory. There are various other things you
|
|
can do. As with all the tools, the <code>--help</code> option is your friend, but a
|
|
few annotated examples and discussion of the more common usage modes follows:
|
|
|
|
<p>To build a single version of a single application, you could run the
|
|
following:
|
|
|
|
<pre class="example"> ./build.py --package=org.fdroid.fdroid --vercode 16
|
|
</pre>
|
|
<p>This attempts to build version code 16 (which is version 0.25) of the F-Droid
|
|
client. Many of the tools recognise this <code>--package</code> parameter, allowing
|
|
their activity to be limited to just a single package.
|
|
|
|
<p>If the build above was succesful, two files will have been placed in the
|
|
<code>unsigned</code> directory:
|
|
|
|
<pre class="example"> org.fdroid.fdroid_16.apk
|
|
org.fdroid.fdroid_16_src.tar.gz
|
|
</pre>
|
|
<p>The first is the (unsigned) APK. You could sign this with a debug key and push
|
|
it direct to your device or an emulator for testing. The second is a source
|
|
tarball containing exactly the source that was used to generate the binary.
|
|
|
|
<p>If you were intending to publish these files, you could then run:
|
|
|
|
<pre class="example"> ./publish.py
|
|
</pre>
|
|
<p>The source tarball would move to the <code>repo</code> directory (which is the
|
|
directory you would push to your web server). A signed and zip-aligned version
|
|
of the APK would also appear there, and both files would be removed from the
|
|
<code>unsigned</code> directory.
|
|
|
|
<p>If you're building purely for the purposes of testing, and not intending to
|
|
push the results to a repository, at least yet, the <code>--test</code> option can be
|
|
used to direct output to the <code>tmp</code> directory instead of <code>unsigned</code>.
|
|
A similar effect could by achieved by simply deleting the output files from
|
|
<code>unsigned</code> after the build, but with the risk of forgetting to do so!
|
|
|
|
<p>Along similar lines (and only in conjunction with <code>--test</code>, you can use
|
|
<code>--force</code> to force a build of a Disabled application for test purposes,
|
|
where normally it would be completely ignored.
|
|
|
|
<div class="node">
|
|
<a name="Metadata"></a>
|
|
<p><hr>
|
|
Next: <a rel="next" accesskey="n" href="#Build-Server">Build Server</a>,
|
|
Previous: <a rel="previous" accesskey="p" href="#Building-Applications">Building Applications</a>,
|
|
Up: <a rel="up" accesskey="u" href="#Top">Top</a>
|
|
|
|
</div>
|
|
|
|
<h2 class="chapter">6 Metadata</h2>
|
|
|
|
<p><a name="index-metadata-4"></a>
|
|
Information used by update.py to compile the public index comes from two
|
|
sources:
|
|
|
|
<ol type=1 start=1>
|
|
<li>the APK files in the repo directory, and
|
|
<li>the metadata files in the metadata directory.
|
|
</ol>
|
|
|
|
<p>The metadata files are simple, easy to edit text files, always named as the
|
|
application's package ID with '.txt' appended.
|
|
|
|
<p>Note that although the metadata files are designed to be easily read and
|
|
writable by humans, they are also processed and written by various scripts.
|
|
They are capable of rewriting the entire file when necessary. Even so,
|
|
the structure and comments will be preserved correctly, although the order
|
|
of fields will be standardised. (In the event that the original file was
|
|
in a different order, comments are considered as being attached to the field
|
|
following them). In fact, you can standardise all the metadata in a single
|
|
command, without changing the functional content, by running:
|
|
|
|
<pre class="example"> ./rewritemetadata.py
|
|
</pre>
|
|
<p>The following sections describe the fields recognised within the file.
|
|
|
|
<ul class="menu">
|
|
<li><a accesskey="1" href="#License">License</a>
|
|
<li><a accesskey="2" href="#Name">Name</a>
|
|
<li><a accesskey="3" href="#Web-Site">Web Site</a>
|
|
<li><a accesskey="4" href="#Source-Code">Source Code</a>
|
|
<li><a accesskey="5" href="#Issue-Tracker">Issue Tracker</a>
|
|
<li><a accesskey="6" href="#Donate">Donate</a>
|
|
<li><a accesskey="7" href="#Summary">Summary</a>
|
|
<li><a accesskey="8" href="#Description">Description</a>
|
|
<li><a accesskey="9" href="#Repo-Type">Repo Type</a>
|
|
<li><a href="#Repo">Repo</a>
|
|
<li><a href="#Build-Version">Build Version</a>
|
|
<li><a href="#AntiFeatures">AntiFeatures</a>
|
|
<li><a href="#Disabled">Disabled</a>
|
|
<li><a href="#Requires-Root">Requires Root</a>
|
|
</ul>
|
|
|
|
<div class="node">
|
|
<a name="License"></a>
|
|
<p><hr>
|
|
Next: <a rel="next" accesskey="n" href="#Name">Name</a>,
|
|
Up: <a rel="up" accesskey="u" href="#Metadata">Metadata</a>
|
|
|
|
</div>
|
|
|
|
<h3 class="section">6.1 License</h3>
|
|
|
|
<p><a name="index-license-5"></a>
|
|
The license for the application.
|
|
|
|
<p>Common values:
|
|
|
|
<ul>
|
|
<li>‘<samp><span class="samp">GPLv2</span></samp>’
|
|
|
|
<li>‘<samp><span class="samp">GPLv2+</span></samp>’
|
|
|
|
<li>‘<samp><span class="samp">GPLv3</span></samp>’
|
|
|
|
<li>‘<samp><span class="samp">Apache2</span></samp>’
|
|
|
|
<li>‘<samp><span class="samp">MIT</span></samp>’
|
|
|
|
<li>‘<samp><span class="samp">BSD</span></samp>’
|
|
|
|
</ul>
|
|
|
|
<div class="node">
|
|
<a name="Name"></a>
|
|
<p><hr>
|
|
Next: <a rel="next" accesskey="n" href="#Web-Site">Web Site</a>,
|
|
Previous: <a rel="previous" accesskey="p" href="#License">License</a>,
|
|
Up: <a rel="up" accesskey="u" href="#Metadata">Metadata</a>
|
|
|
|
</div>
|
|
|
|
<h3 class="section">6.2 Name</h3>
|
|
|
|
<p><a name="index-Name-6"></a>
|
|
The name of the application. Normally, this field should not be present since the
|
|
application's correct name is retrieved from the APK file. However, in a situation
|
|
where an APK contains a bad or missing application name, it can be overridden
|
|
using this.
|
|
|
|
<div class="node">
|
|
<a name="Web-Site"></a>
|
|
<p><hr>
|
|
Next: <a rel="next" accesskey="n" href="#Source-Code">Source Code</a>,
|
|
Previous: <a rel="previous" accesskey="p" href="#Name">Name</a>,
|
|
Up: <a rel="up" accesskey="u" href="#Metadata">Metadata</a>
|
|
|
|
</div>
|
|
|
|
<h3 class="section">6.3 Web Site</h3>
|
|
|
|
<p><a name="index-Web-Site-7"></a>
|
|
The URL for the application's web site.
|
|
|
|
<div class="node">
|
|
<a name="Source-Code"></a>
|
|
<p><hr>
|
|
Next: <a rel="next" accesskey="n" href="#Issue-Tracker">Issue Tracker</a>,
|
|
Previous: <a rel="previous" accesskey="p" href="#Web-Site">Web Site</a>,
|
|
Up: <a rel="up" accesskey="u" href="#Metadata">Metadata</a>
|
|
|
|
</div>
|
|
|
|
<h3 class="section">6.4 Source Code</h3>
|
|
|
|
<p><a name="index-Source-Code-8"></a>
|
|
The URL to view or obtain the application's source code. This should be
|
|
something human-friendly. Machine-readable source-code is covered in the
|
|
'Repo' field.
|
|
|
|
<div class="node">
|
|
<a name="Issue-Tracker"></a>
|
|
<p><hr>
|
|
Next: <a rel="next" accesskey="n" href="#Donate">Donate</a>,
|
|
Previous: <a rel="previous" accesskey="p" href="#Source-Code">Source Code</a>,
|
|
Up: <a rel="up" accesskey="u" href="#Metadata">Metadata</a>
|
|
|
|
</div>
|
|
|
|
<h3 class="section">6.5 Issue Tracker</h3>
|
|
|
|
<p><a name="index-Issue-Tracker-9"></a>
|
|
The URL for the application's issue tracker. Optional, since not all
|
|
applications have one.
|
|
|
|
<div class="node">
|
|
<a name="Donate"></a>
|
|
<p><hr>
|
|
Next: <a rel="next" accesskey="n" href="#Summary">Summary</a>,
|
|
Previous: <a rel="previous" accesskey="p" href="#Issue-Tracker">Issue Tracker</a>,
|
|
Up: <a rel="up" accesskey="u" href="#Metadata">Metadata</a>
|
|
|
|
</div>
|
|
|
|
<h3 class="section">6.6 Donate</h3>
|
|
|
|
<p><a name="index-Donate-10"></a>
|
|
The URL to donate to the project. This could be the project's donate page
|
|
if it has one, or perhaps even a direct PayPal link.
|
|
|
|
<div class="node">
|
|
<a name="Summary"></a>
|
|
<p><hr>
|
|
Next: <a rel="next" accesskey="n" href="#Description">Description</a>,
|
|
Previous: <a rel="previous" accesskey="p" href="#Donate">Donate</a>,
|
|
Up: <a rel="up" accesskey="u" href="#Metadata">Metadata</a>
|
|
|
|
</div>
|
|
|
|
<h3 class="section">6.7 Summary</h3>
|
|
|
|
<p><a name="index-Summary-11"></a>
|
|
A brief summary of what the application is.
|
|
|
|
<div class="node">
|
|
<a name="Description"></a>
|
|
<p><hr>
|
|
Next: <a rel="next" accesskey="n" href="#Repo-Type">Repo Type</a>,
|
|
Previous: <a rel="previous" accesskey="p" href="#Summary">Summary</a>,
|
|
Up: <a rel="up" accesskey="u" href="#Metadata">Metadata</a>
|
|
|
|
</div>
|
|
|
|
<h3 class="section">6.8 Description</h3>
|
|
|
|
<p><a name="index-Description-12"></a>
|
|
A full description of the application. This can span multiple lines, and is
|
|
terminated by a line containing a single '.'.
|
|
|
|
<div class="node">
|
|
<a name="Repo-Type"></a>
|
|
<p><hr>
|
|
Next: <a rel="next" accesskey="n" href="#Repo">Repo</a>,
|
|
Previous: <a rel="previous" accesskey="p" href="#Description">Description</a>,
|
|
Up: <a rel="up" accesskey="u" href="#Metadata">Metadata</a>
|
|
|
|
</div>
|
|
|
|
<h3 class="section">6.9 Repo Type</h3>
|
|
|
|
<p><a name="index-Repo-Type-13"></a>
|
|
The type of repository - for automatic building from source. If this is not
|
|
specified, automatic building is disabled for this application. Possible
|
|
values are:
|
|
|
|
<ul>
|
|
<li>‘<samp><span class="samp">git</span></samp>’
|
|
<li>‘<samp><span class="samp">svn</span></samp>’
|
|
<li>‘<samp><span class="samp">git-svn</span></samp>’
|
|
<li>‘<samp><span class="samp">hg</span></samp>’
|
|
<li>‘<samp><span class="samp">bzr</span></samp>’
|
|
</ul>
|
|
<div class="node">
|
|
<a name="Repo"></a>
|
|
<p><hr>
|
|
Next: <a rel="next" accesskey="n" href="#Build-Version">Build Version</a>,
|
|
Previous: <a rel="previous" accesskey="p" href="#Repo-Type">Repo Type</a>,
|
|
Up: <a rel="up" accesskey="u" href="#Metadata">Metadata</a>
|
|
|
|
</div>
|
|
|
|
<h3 class="section">6.10 Repo</h3>
|
|
|
|
<p><a name="index-Repo-14"></a>
|
|
The repository location. Usually a git: or svn: URL, for example.
|
|
|
|
<p>The git-svn option connects to an SVN repository, and you specify the URL in
|
|
exactly the same way, but git is used as a back-end. This is preferable for
|
|
performance reasons, and also because a local copy of the entire history is
|
|
available in case the upstream repository disappears. (It happens!)
|
|
|
|
<p>For a Subversion repo that requires authentication, you can precede the repo
|
|
URL with username:password and those parameters will be passed as <samp><span class="option">--username</span></samp>
|
|
and <samp><span class="option">--password</span></samp> to the SVN checkout command. (This works only for
|
|
plain svn and not for git-svn - one of the very few cases where using svn is
|
|
advisable).
|
|
|
|
<div class="node">
|
|
<a name="Build-Version"></a>
|
|
<p><hr>
|
|
Next: <a rel="next" accesskey="n" href="#AntiFeatures">AntiFeatures</a>,
|
|
Previous: <a rel="previous" accesskey="p" href="#Repo">Repo</a>,
|
|
Up: <a rel="up" accesskey="u" href="#Metadata">Metadata</a>
|
|
|
|
</div>
|
|
|
|
<h3 class="section">6.11 Build Version</h3>
|
|
|
|
<p><a name="index-Build-Version-15"></a>
|
|
Any number of these fields can be present, each specifying a version to
|
|
automatically build from source. The value is a comma-separated list.
|
|
For example:
|
|
|
|
<p>‘<samp><span class="samp">Build Version:0.12,3,651696a49be2cd7db5ce6a2fa8185e31f9a20035</span></samp>’
|
|
|
|
<p>The above specifies to build version 0.12, which has a version code of 3.
|
|
The third parameter specifies the tag, commit or revision number from
|
|
which to build it in the source repository.
|
|
|
|
<p>If the commit version starts with a !, that version is not built. Instead,
|
|
everything after the ! is used as a reason why it can't be built. The
|
|
purpose of this feature is to allow non-buildable releases (e.g. the source
|
|
is not published) to be flagged, so the scripts don't generate repeated
|
|
messages about them. (And also to record the information for review later).
|
|
|
|
<p>In addition to the three, always required, parameters described above,
|
|
further parameters can be added (in name=value format) to apply further
|
|
configuration to the build. These are:
|
|
|
|
<dl>
|
|
<dt><code>subdir=<path></code><dd>Specifies to build from a subdirectory of the checked out source code.
|
|
Normally this directory is changed to before building,
|
|
|
|
<br><dt><code>bindir=<path></code><dd>Normally the build output (apk) is expected to be in the bin
|
|
subdirectory below the ant build files. If the project is configured
|
|
to put it elsewhere, that can be specified here, relative to the base
|
|
of the checked out repo.
|
|
|
|
<br><dt><code>oldsdkloc=yes</code><dd>The sdk location in the repo is in an old format, or the build.xml is
|
|
expecting such. The 'new' format is sdk.dir while the VERY OLD format
|
|
is sdk-location. Typically, if you get a message along the lines of:
|
|
"com.android.ant.SetupTask cannot be found" when trying to build, then
|
|
try enabling this option.
|
|
|
|
<br><dt><code>target=<target></code><dd>Specifies a particular SDK target, when the source doesn't. This is
|
|
likely to cause the whole build.xml to be rewritten, which is fine if
|
|
it's a 'standard' android file or doesn't already exist, but not a
|
|
good idea if it's heavily customised.
|
|
|
|
<br><dt><code>rm=<relpath></code><dd>Specifies the relative path of file to delete before the build is
|
|
done. The path is relative to the base of the build directory - i.e.
|
|
the directory that contains AndroidManifest.xml.
|
|
|
|
<br><dt><code>antcommand=xxx</code><dd>Specify an alternate ant command (target) instead of the default
|
|
'release'.
|
|
|
|
<br><dt><code>forceversion=yes</code><dd>If specified, the package version in AndroidManifest.xml is replaced
|
|
with the version name for the build as specified in the metadata.
|
|
|
|
<p>This is useful for cases when upstream repo failed to update it for
|
|
specific tag, or to build an arbitrary revision.
|
|
|
|
<br><dt><code>forcevercode=yes</code><dd>If specified, the package version code in the AndroidManifest.xml is
|
|
replaced with the version code for the build. See also forceversion.
|
|
|
|
<br><dt><code>update=xxx</code><dd>By default, 'android update project' is used to generate or update the
|
|
build.xml file. Specifying update=no bypasses that.
|
|
|
|
<p>Specifiying update=force forces rebuilding of the build.xml file at the
|
|
same time - this is frequently needed with r14 of the Android platform
|
|
tools.
|
|
|
|
<p>Be aware of any customisations in build.xml when using update=force.
|
|
|
|
<br><dt><code>initfun=yes</code><dd>Enables a selection of mad hacks to make com.funambol.android build.
|
|
Probably not useful for any other application.
|
|
|
|
<br><dt><code>buildjni=[no|yes|force]</code><dd>Enables building of native code via the ndk-build script before doing
|
|
the main ant build. The default is <code>no</code>.
|
|
|
|
<p>The build and scan processes will complain (refuse to build) if this is set
|
|
to <code>no</code>, but there is a <code>jni</code> directory present. If the native code
|
|
is being built by other means, you can specify <code>manual</code> here to avoid
|
|
that. However, if the native code is actually not required, remove the
|
|
directory instead.
|
|
|
|
<br><dt><code>submodules=yes</code><dd>Use if the project (git only) has submodules - causes git submodule
|
|
init and update to be executed after the source is cloned.
|
|
|
|
<br><dt><code>encoding=xxxx</code><dd>Adds a java.encoding property to local.properties with the given
|
|
value. Generally the value will be 'utf-8'. This is picked up by the
|
|
SDK's ant rules, and forces the Java compiler to interpret source
|
|
files with this encoding. If you receive warnings during the compile
|
|
about character encodings, you probably need this.
|
|
|
|
<br><dt><code>prebuild=xxxx</code><dd>Specifies a shell command (or commands - chain with &&) to run before
|
|
the build takes place. Backslash can be used as an escape character to
|
|
insert literal commas, or as the last character on a line to join that
|
|
line with the next. It has no special meaning in other contexts; in
|
|
particular, literal backslashes should not be escaped.
|
|
|
|
<br><dt><code>init=xxxx</code><dd>As for 'prebuild', but runs on the source code BEFORE any other processing
|
|
takes place.
|
|
|
|
<br><dt><code>novcheck=yes</code><dd>Don't check that the version name and code in the resulting apk are
|
|
correct by looking at the build output - assume the metadata is
|
|
correct. This takes away a useful level of sanity checking, and should
|
|
only be used if the values can't be extracted.
|
|
|
|
<br><dt><code>fixtrans=yes</code><dd>Modifies any instances of string resources that use multiple
|
|
formatting arguments, but don't use positional notation. For example,
|
|
"Hello %s, %d" becomes "Hello %1$s, %2$d". Newer versions of the
|
|
Android platform tools enforce this sensible standard. If you get
|
|
error messages relating to that, you need to enable this.
|
|
|
|
<br><dt><code>fixapos=yes</code><dd>Like fixtrans, but deals with an even older issue relating to
|
|
'unescaped apostrophes' in translation strings.
|
|
|
|
<br><dt><code>maven=yes</code><dd>Build with maven instead of ant
|
|
|
|
<br><dt><code>patch=x</code><dd>Apply patch(es). 'x' names one (or more - comma-seperated)
|
|
files within a directory below the metadata, with the same
|
|
name as the metadata file but without the extension. Each of
|
|
these patches is applied to the code in turn.
|
|
|
|
<br><dt><code>extlibs=a;b;c</code><dd>Specifies a list of external libraries (jar files) from the
|
|
<code>build/extlib</code> library, which will be placed in the <code>libs</code> directory
|
|
of the project. Separate items with semicolons.
|
|
|
|
<br><dt><code>srclibs=a@r;b@r1;</code><dd>Specifies a list of source libraries (kept up to date using version control)
|
|
from a predefined set. Separate items with semicolons, and each item is of
|
|
the form name@rev where name is the predefined source library name and rev is
|
|
the revision in source control to use. You can then also use $$name$$ in the
|
|
prebuild command to substitute the relative path to the library directory.
|
|
|
|
<p>The available source libraries are current hard-coded in common.py. This will
|
|
later be data-driven.
|
|
|
|
</dl>
|
|
|
|
<p>Another example, using extra parameters:
|
|
|
|
<p>‘<samp><span class="samp">Build Version:1.09.03,10903,45,subdir=Timeriffic,oldsdkloc=yes</span></samp>’
|
|
|
|
<div class="node">
|
|
<a name="AntiFeatures"></a>
|
|
<p><hr>
|
|
Next: <a rel="next" accesskey="n" href="#Disabled">Disabled</a>,
|
|
Previous: <a rel="previous" accesskey="p" href="#Build-Version">Build Version</a>,
|
|
Up: <a rel="up" accesskey="u" href="#Metadata">Metadata</a>
|
|
|
|
</div>
|
|
|
|
<h3 class="section">6.12 AntiFeatures</h3>
|
|
|
|
<p><a name="index-AntiFeatures-16"></a>
|
|
This is optional - if present, it contains a comma-separated list of any of
|
|
the following values, describing an AntiFeature the application has:
|
|
|
|
<ul>
|
|
<li>‘<samp><span class="samp">Ads</span></samp>’ - the application contains advertising.
|
|
|
|
<li>‘<samp><span class="samp">Tracking</span></samp>’ - the application tracks and reports your activity to
|
|
somewhere without your consent.
|
|
|
|
<li>‘<samp><span class="samp">NonFreeNet</span></samp>’ - the application promotes a non-Free network service.
|
|
|
|
<li>‘<samp><span class="samp">NonFreeAdd</span></samp>’ - the application promotes non-Free add-ons.
|
|
|
|
<li>‘<samp><span class="samp">NonFreeDep</span></samp>’ - the application depends on a non-Free application (e.g.
|
|
Google Maps) - i.e. it requires it to be installed on the device, but does not
|
|
include it.
|
|
|
|
</ul>
|
|
|
|
<div class="node">
|
|
<a name="Disabled"></a>
|
|
<p><hr>
|
|
Next: <a rel="next" accesskey="n" href="#Requires-Root">Requires Root</a>,
|
|
Previous: <a rel="previous" accesskey="p" href="#AntiFeatures">AntiFeatures</a>,
|
|
Up: <a rel="up" accesskey="u" href="#Metadata">Metadata</a>
|
|
|
|
</div>
|
|
|
|
<h3 class="section">6.13 Disabled</h3>
|
|
|
|
<p><a name="index-Disabled-17"></a>
|
|
If this field is present, the application does not get put into the public
|
|
index. This allows metadata to be retained while an application is temporarily
|
|
disabled from being published. The value should be a description of why the
|
|
application is disabled.
|
|
|
|
<div class="node">
|
|
<a name="Requires-Root"></a>
|
|
<p><hr>
|
|
Previous: <a rel="previous" accesskey="p" href="#Disabled">Disabled</a>,
|
|
Up: <a rel="up" accesskey="u" href="#Metadata">Metadata</a>
|
|
|
|
</div>
|
|
|
|
<h3 class="section">6.14 Requires Root</h3>
|
|
|
|
<p><a name="index-Requires-Root-18"></a>
|
|
Set this optional field to "Yes" if the application requires root
|
|
privileges to be usable. This lets the client filter it out if the
|
|
user so desires.
|
|
|
|
<div class="node">
|
|
<a name="Build-Server"></a>
|
|
<p><hr>
|
|
Next: <a rel="next" accesskey="n" href="#GNU-Free-Documentation-License">GNU Free Documentation License</a>,
|
|
Previous: <a rel="previous" accesskey="p" href="#Metadata">Metadata</a>,
|
|
Up: <a rel="up" accesskey="u" href="#Top">Top</a>
|
|
|
|
</div>
|
|
|
|
<h2 class="chapter">7 Build Server</h2>
|
|
|
|
<p>The Build Server system isolates the builds for each package within a clean,
|
|
isolated and secure throwaway virtual machine environment.
|
|
|
|
<h3 class="section">7.1 Rationale</h3>
|
|
|
|
<p>Building applications in this manner on a large scale, especially with the
|
|
involvement of automated and/or unattended processes, could be considered
|
|
a dangerous pastime from a security perspective. This is even more the case
|
|
when the products of the build are also distributed widely and in a
|
|
semi-automated ("you have updates available") fashion.
|
|
|
|
<p>Assume that an upstream source repository is compromised. A small selection
|
|
of things that an attacker could do in such a situation:
|
|
|
|
<ol type=1 start=1>
|
|
<li>Use custom ant build steps to execute virtually anything as the user doing
|
|
the build.
|
|
<li>Access the keystore.
|
|
<li>Modify the built apk files or source tarballs for other applications in the
|
|
repository.
|
|
<li>Modify the metadata (which includes build scripts, which again, also includes
|
|
the ability to execute anything) for other applications in the repository.
|
|
</ol>
|
|
|
|
<p>Through complete isolation, the repurcussions are at least limited to the
|
|
application in question.
|
|
|
|
<p>Aside from security issues, there are some applications which have strange
|
|
requirements such as custom versions of the NDK. It would be impractical (or
|
|
at least extremely messy) to start modifying and restoring the SDK on a
|
|
multi-purpose system, but within the confines of a throwaway single-use
|
|
virtual machine, anything is possible.
|
|
|
|
<h3 class="section">7.2 Setting up a build server</h3>
|
|
|
|
<p>Integrating the build server setup into the main scripts is a work in progress.
|
|
Some things may not work properly yet. Talk to CiaranG if you're trying to use
|
|
this and have problems.
|
|
|
|
<p>In addition to the basic setup sets previously described, you will also need
|
|
a Vagrant-compatible Debian Squeeze base box called 'debian6-32'. You can
|
|
create one of these for yourself from standard Debian installation media, as
|
|
the specification for what's required to be Vagrant-compatible is very well
|
|
defined. This is the sensible and secure way to do it, since you know what's
|
|
in it. If you insist on taking a shortcut, ask CiaranG for his on the forum
|
|
or in IRC.
|
|
|
|
<p>With this base box installed, you can then do:
|
|
|
|
<pre class="example"> ./makebuildserver.sh
|
|
</pre>
|
|
<p>This will take a long time - most of it spent installing the necessary parts
|
|
of the Android SDK for all the various platforms. Luckily you only need to
|
|
do it occasionally.
|
|
|
|
<p>Once it's complete you'll have a new base box called 'buildserver' which is
|
|
what's used for the actual builds. You can then build packages as normal,
|
|
but with the addition of the <code>--server</code> flag to <code>build.py</code> to
|
|
instruct it to do all the hard work within the virtual machine, which is
|
|
reset to a completely clean state for every package built.
|
|
|
|
<div class="node">
|
|
<a name="GNU-Free-Documentation-License"></a>
|
|
<p><hr>
|
|
Next: <a rel="next" accesskey="n" href="#Index">Index</a>,
|
|
Previous: <a rel="previous" accesskey="p" href="#Build-Server">Build Server</a>,
|
|
Up: <a rel="up" accesskey="u" href="#Top">Top</a>
|
|
|
|
</div>
|
|
|
|
<h2 class="appendix">Appendix A GNU Free Documentation License</h2>
|
|
|
|
<!-- The GNU Free Documentation License. -->
|
|
<div align="center">Version 1.3, 3 November 2008</div>
|
|
|
|
<!-- This file is intended to be included within another document, -->
|
|
<!-- hence no sectioning command or @node. -->
|
|
<pre class="display"> Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
|
|
<a href="http://fsf.org/">http://fsf.org/</a>
|
|
|
|
Everyone is permitted to copy and distribute verbatim copies
|
|
of this license document, but changing it is not allowed.
|
|
</pre>
|
|
<ol type=1 start=0>
|
|
<li>PREAMBLE
|
|
|
|
<p>The purpose of this License is to make a manual, textbook, or other
|
|
functional and useful document <dfn>free</dfn> in the sense of freedom: to
|
|
assure everyone the effective freedom to copy and redistribute it,
|
|
with or without modifying it, either commercially or noncommercially.
|
|
Secondarily, this License preserves for the author and publisher a way
|
|
to get credit for their work, while not being considered responsible
|
|
for modifications made by others.
|
|
|
|
<p>This License is a kind of “copyleft”, which means that derivative
|
|
works of the document must themselves be free in the same sense. It
|
|
complements the GNU General Public License, which is a copyleft
|
|
license designed for free software.
|
|
|
|
<p>We have designed this License in order to use it for manuals for free
|
|
software, because free software needs free documentation: a free
|
|
program should come with manuals providing the same freedoms that the
|
|
software does. But this License is not limited to software manuals;
|
|
it can be used for any textual work, regardless of subject matter or
|
|
whether it is published as a printed book. We recommend this License
|
|
principally for works whose purpose is instruction or reference.
|
|
|
|
<li>APPLICABILITY AND DEFINITIONS
|
|
|
|
<p>This License applies to any manual or other work, in any medium, that
|
|
contains a notice placed by the copyright holder saying it can be
|
|
distributed under the terms of this License. Such a notice grants a
|
|
world-wide, royalty-free license, unlimited in duration, to use that
|
|
work under the conditions stated herein. The “Document”, below,
|
|
refers to any such manual or work. Any member of the public is a
|
|
licensee, and is addressed as “you”. You accept the license if you
|
|
copy, modify or distribute the work in a way requiring permission
|
|
under copyright law.
|
|
|
|
<p>A “Modified Version” of the Document means any work containing the
|
|
Document or a portion of it, either copied verbatim, or with
|
|
modifications and/or translated into another language.
|
|
|
|
<p>A “Secondary Section” is a named appendix or a front-matter section
|
|
of the Document that deals exclusively with the relationship of the
|
|
publishers or authors of the Document to the Document's overall
|
|
subject (or to related matters) and contains nothing that could fall
|
|
directly within that overall subject. (Thus, if the Document is in
|
|
part a textbook of mathematics, a Secondary Section may not explain
|
|
any mathematics.) The relationship could be a matter of historical
|
|
connection with the subject or with related matters, or of legal,
|
|
commercial, philosophical, ethical or political position regarding
|
|
them.
|
|
|
|
<p>The “Invariant Sections” are certain Secondary Sections whose titles
|
|
are designated, as being those of Invariant Sections, in the notice
|
|
that says that the Document is released under this License. If a
|
|
section does not fit the above definition of Secondary then it is not
|
|
allowed to be designated as Invariant. The Document may contain zero
|
|
Invariant Sections. If the Document does not identify any Invariant
|
|
Sections then there are none.
|
|
|
|
<p>The “Cover Texts” are certain short passages of text that are listed,
|
|
as Front-Cover Texts or Back-Cover Texts, in the notice that says that
|
|
the Document is released under this License. A Front-Cover Text may
|
|
be at most 5 words, and a Back-Cover Text may be at most 25 words.
|
|
|
|
<p>A “Transparent” copy of the Document means a machine-readable copy,
|
|
represented in a format whose specification is available to the
|
|
general public, that is suitable for revising the document
|
|
straightforwardly with generic text editors or (for images composed of
|
|
pixels) generic paint programs or (for drawings) some widely available
|
|
drawing editor, and that is suitable for input to text formatters or
|
|
for automatic translation to a variety of formats suitable for input
|
|
to text formatters. A copy made in an otherwise Transparent file
|
|
format whose markup, or absence of markup, has been arranged to thwart
|
|
or discourage subsequent modification by readers is not Transparent.
|
|
An image format is not Transparent if used for any substantial amount
|
|
of text. A copy that is not “Transparent” is called “Opaque”.
|
|
|
|
<p>Examples of suitable formats for Transparent copies include plain
|
|
<span class="sc">ascii</span> without markup, Texinfo input format, LaTeX input
|
|
format, <acronym>SGML</acronym> or <acronym>XML</acronym> using a publicly available
|
|
<acronym>DTD</acronym>, and standard-conforming simple <acronym>HTML</acronym>,
|
|
PostScript or <acronym>PDF</acronym> designed for human modification. Examples
|
|
of transparent image formats include <acronym>PNG</acronym>, <acronym>XCF</acronym> and
|
|
<acronym>JPG</acronym>. Opaque formats include proprietary formats that can be
|
|
read and edited only by proprietary word processors, <acronym>SGML</acronym> or
|
|
<acronym>XML</acronym> for which the <acronym>DTD</acronym> and/or processing tools are
|
|
not generally available, and the machine-generated <acronym>HTML</acronym>,
|
|
PostScript or <acronym>PDF</acronym> produced by some word processors for
|
|
output purposes only.
|
|
|
|
<p>The “Title Page” means, for a printed book, the title page itself,
|
|
plus such following pages as are needed to hold, legibly, the material
|
|
this License requires to appear in the title page. For works in
|
|
formats which do not have any title page as such, “Title Page” means
|
|
the text near the most prominent appearance of the work's title,
|
|
preceding the beginning of the body of the text.
|
|
|
|
<p>The “publisher” means any person or entity that distributes copies
|
|
of the Document to the public.
|
|
|
|
<p>A section “Entitled XYZ” means a named subunit of the Document whose
|
|
title either is precisely XYZ or contains XYZ in parentheses following
|
|
text that translates XYZ in another language. (Here XYZ stands for a
|
|
specific section name mentioned below, such as “Acknowledgements”,
|
|
“Dedications”, “Endorsements”, or “History”.) To “Preserve the Title”
|
|
of such a section when you modify the Document means that it remains a
|
|
section “Entitled XYZ” according to this definition.
|
|
|
|
<p>The Document may include Warranty Disclaimers next to the notice which
|
|
states that this License applies to the Document. These Warranty
|
|
Disclaimers are considered to be included by reference in this
|
|
License, but only as regards disclaiming warranties: any other
|
|
implication that these Warranty Disclaimers may have is void and has
|
|
no effect on the meaning of this License.
|
|
|
|
<li>VERBATIM COPYING
|
|
|
|
<p>You may copy and distribute the Document in any medium, either
|
|
commercially or noncommercially, provided that this License, the
|
|
copyright notices, and the license notice saying this License applies
|
|
to the Document are reproduced in all copies, and that you add no other
|
|
conditions whatsoever to those of this License. You may not use
|
|
technical measures to obstruct or control the reading or further
|
|
copying of the copies you make or distribute. However, you may accept
|
|
compensation in exchange for copies. If you distribute a large enough
|
|
number of copies you must also follow the conditions in section 3.
|
|
|
|
<p>You may also lend copies, under the same conditions stated above, and
|
|
you may publicly display copies.
|
|
|
|
<li>COPYING IN QUANTITY
|
|
|
|
<p>If you publish printed copies (or copies in media that commonly have
|
|
printed covers) of the Document, numbering more than 100, and the
|
|
Document's license notice requires Cover Texts, you must enclose the
|
|
copies in covers that carry, clearly and legibly, all these Cover
|
|
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
|
|
the back cover. Both covers must also clearly and legibly identify
|
|
you as the publisher of these copies. The front cover must present
|
|
the full title with all words of the title equally prominent and
|
|
visible. You may add other material on the covers in addition.
|
|
Copying with changes limited to the covers, as long as they preserve
|
|
the title of the Document and satisfy these conditions, can be treated
|
|
as verbatim copying in other respects.
|
|
|
|
<p>If the required texts for either cover are too voluminous to fit
|
|
legibly, you should put the first ones listed (as many as fit
|
|
reasonably) on the actual cover, and continue the rest onto adjacent
|
|
pages.
|
|
|
|
<p>If you publish or distribute Opaque copies of the Document numbering
|
|
more than 100, you must either include a machine-readable Transparent
|
|
copy along with each Opaque copy, or state in or with each Opaque copy
|
|
a computer-network location from which the general network-using
|
|
public has access to download using public-standard network protocols
|
|
a complete Transparent copy of the Document, free of added material.
|
|
If you use the latter option, you must take reasonably prudent steps,
|
|
when you begin distribution of Opaque copies in quantity, to ensure
|
|
that this Transparent copy will remain thus accessible at the stated
|
|
location until at least one year after the last time you distribute an
|
|
Opaque copy (directly or through your agents or retailers) of that
|
|
edition to the public.
|
|
|
|
<p>It is requested, but not required, that you contact the authors of the
|
|
Document well before redistributing any large number of copies, to give
|
|
them a chance to provide you with an updated version of the Document.
|
|
|
|
<li>MODIFICATIONS
|
|
|
|
<p>You may copy and distribute a Modified Version of the Document under
|
|
the conditions of sections 2 and 3 above, provided that you release
|
|
the Modified Version under precisely this License, with the Modified
|
|
Version filling the role of the Document, thus licensing distribution
|
|
and modification of the Modified Version to whoever possesses a copy
|
|
of it. In addition, you must do these things in the Modified Version:
|
|
|
|
<ol type=A start=1>
|
|
<li>Use in the Title Page (and on the covers, if any) a title distinct
|
|
from that of the Document, and from those of previous versions
|
|
(which should, if there were any, be listed in the History section
|
|
of the Document). You may use the same title as a previous version
|
|
if the original publisher of that version gives permission.
|
|
|
|
<li>List on the Title Page, as authors, one or more persons or entities
|
|
responsible for authorship of the modifications in the Modified
|
|
Version, together with at least five of the principal authors of the
|
|
Document (all of its principal authors, if it has fewer than five),
|
|
unless they release you from this requirement.
|
|
|
|
<li>State on the Title page the name of the publisher of the
|
|
Modified Version, as the publisher.
|
|
|
|
<li>Preserve all the copyright notices of the Document.
|
|
|
|
<li>Add an appropriate copyright notice for your modifications
|
|
adjacent to the other copyright notices.
|
|
|
|
<li>Include, immediately after the copyright notices, a license notice
|
|
giving the public permission to use the Modified Version under the
|
|
terms of this License, in the form shown in the Addendum below.
|
|
|
|
<li>Preserve in that license notice the full lists of Invariant Sections
|
|
and required Cover Texts given in the Document's license notice.
|
|
|
|
<li>Include an unaltered copy of this License.
|
|
|
|
<li>Preserve the section Entitled “History”, Preserve its Title, and add
|
|
to it an item stating at least the title, year, new authors, and
|
|
publisher of the Modified Version as given on the Title Page. If
|
|
there is no section Entitled “History” in the Document, create one
|
|
stating the title, year, authors, and publisher of the Document as
|
|
given on its Title Page, then add an item describing the Modified
|
|
Version as stated in the previous sentence.
|
|
|
|
<li>Preserve the network location, if any, given in the Document for
|
|
public access to a Transparent copy of the Document, and likewise
|
|
the network locations given in the Document for previous versions
|
|
it was based on. These may be placed in the “History” section.
|
|
You may omit a network location for a work that was published at
|
|
least four years before the Document itself, or if the original
|
|
publisher of the version it refers to gives permission.
|
|
|
|
<li>For any section Entitled “Acknowledgements” or “Dedications”, Preserve
|
|
the Title of the section, and preserve in the section all the
|
|
substance and tone of each of the contributor acknowledgements and/or
|
|
dedications given therein.
|
|
|
|
<li>Preserve all the Invariant Sections of the Document,
|
|
unaltered in their text and in their titles. Section numbers
|
|
or the equivalent are not considered part of the section titles.
|
|
|
|
<li>Delete any section Entitled “Endorsements”. Such a section
|
|
may not be included in the Modified Version.
|
|
|
|
<li>Do not retitle any existing section to be Entitled “Endorsements” or
|
|
to conflict in title with any Invariant Section.
|
|
|
|
<li>Preserve any Warranty Disclaimers.
|
|
</ol>
|
|
|
|
<p>If the Modified Version includes new front-matter sections or
|
|
appendices that qualify as Secondary Sections and contain no material
|
|
copied from the Document, you may at your option designate some or all
|
|
of these sections as invariant. To do this, add their titles to the
|
|
list of Invariant Sections in the Modified Version's license notice.
|
|
These titles must be distinct from any other section titles.
|
|
|
|
<p>You may add a section Entitled “Endorsements”, provided it contains
|
|
nothing but endorsements of your Modified Version by various
|
|
parties—for example, statements of peer review or that the text has
|
|
been approved by an organization as the authoritative definition of a
|
|
standard.
|
|
|
|
<p>You may add a passage of up to five words as a Front-Cover Text, and a
|
|
passage of up to 25 words as a Back-Cover Text, to the end of the list
|
|
of Cover Texts in the Modified Version. Only one passage of
|
|
Front-Cover Text and one of Back-Cover Text may be added by (or
|
|
through arrangements made by) any one entity. If the Document already
|
|
includes a cover text for the same cover, previously added by you or
|
|
by arrangement made by the same entity you are acting on behalf of,
|
|
you may not add another; but you may replace the old one, on explicit
|
|
permission from the previous publisher that added the old one.
|
|
|
|
<p>The author(s) and publisher(s) of the Document do not by this License
|
|
give permission to use their names for publicity for or to assert or
|
|
imply endorsement of any Modified Version.
|
|
|
|
<li>COMBINING DOCUMENTS
|
|
|
|
<p>You may combine the Document with other documents released under this
|
|
License, under the terms defined in section 4 above for modified
|
|
versions, provided that you include in the combination all of the
|
|
Invariant Sections of all of the original documents, unmodified, and
|
|
list them all as Invariant Sections of your combined work in its
|
|
license notice, and that you preserve all their Warranty Disclaimers.
|
|
|
|
<p>The combined work need only contain one copy of this License, and
|
|
multiple identical Invariant Sections may be replaced with a single
|
|
copy. If there are multiple Invariant Sections with the same name but
|
|
different contents, make the title of each such section unique by
|
|
adding at the end of it, in parentheses, the name of the original
|
|
author or publisher of that section if known, or else a unique number.
|
|
Make the same adjustment to the section titles in the list of
|
|
Invariant Sections in the license notice of the combined work.
|
|
|
|
<p>In the combination, you must combine any sections Entitled “History”
|
|
in the various original documents, forming one section Entitled
|
|
“History”; likewise combine any sections Entitled “Acknowledgements”,
|
|
and any sections Entitled “Dedications”. You must delete all
|
|
sections Entitled “Endorsements.”
|
|
|
|
<li>COLLECTIONS OF DOCUMENTS
|
|
|
|
<p>You may make a collection consisting of the Document and other documents
|
|
released under this License, and replace the individual copies of this
|
|
License in the various documents with a single copy that is included in
|
|
the collection, provided that you follow the rules of this License for
|
|
verbatim copying of each of the documents in all other respects.
|
|
|
|
<p>You may extract a single document from such a collection, and distribute
|
|
it individually under this License, provided you insert a copy of this
|
|
License into the extracted document, and follow this License in all
|
|
other respects regarding verbatim copying of that document.
|
|
|
|
<li>AGGREGATION WITH INDEPENDENT WORKS
|
|
|
|
<p>A compilation of the Document or its derivatives with other separate
|
|
and independent documents or works, in or on a volume of a storage or
|
|
distribution medium, is called an “aggregate” if the copyright
|
|
resulting from the compilation is not used to limit the legal rights
|
|
of the compilation's users beyond what the individual works permit.
|
|
When the Document is included in an aggregate, this License does not
|
|
apply to the other works in the aggregate which are not themselves
|
|
derivative works of the Document.
|
|
|
|
<p>If the Cover Text requirement of section 3 is applicable to these
|
|
copies of the Document, then if the Document is less than one half of
|
|
the entire aggregate, the Document's Cover Texts may be placed on
|
|
covers that bracket the Document within the aggregate, or the
|
|
electronic equivalent of covers if the Document is in electronic form.
|
|
Otherwise they must appear on printed covers that bracket the whole
|
|
aggregate.
|
|
|
|
<li>TRANSLATION
|
|
|
|
<p>Translation is considered a kind of modification, so you may
|
|
distribute translations of the Document under the terms of section 4.
|
|
Replacing Invariant Sections with translations requires special
|
|
permission from their copyright holders, but you may include
|
|
translations of some or all Invariant Sections in addition to the
|
|
original versions of these Invariant Sections. You may include a
|
|
translation of this License, and all the license notices in the
|
|
Document, and any Warranty Disclaimers, provided that you also include
|
|
the original English version of this License and the original versions
|
|
of those notices and disclaimers. In case of a disagreement between
|
|
the translation and the original version of this License or a notice
|
|
or disclaimer, the original version will prevail.
|
|
|
|
<p>If a section in the Document is Entitled “Acknowledgements”,
|
|
“Dedications”, or “History”, the requirement (section 4) to Preserve
|
|
its Title (section 1) will typically require changing the actual
|
|
title.
|
|
|
|
<li>TERMINATION
|
|
|
|
<p>You may not copy, modify, sublicense, or distribute the Document
|
|
except as expressly provided under this License. Any attempt
|
|
otherwise to copy, modify, sublicense, or distribute it is void, and
|
|
will automatically terminate your rights under this License.
|
|
|
|
<p>However, if you cease all violation of this License, then your license
|
|
from a particular copyright holder is reinstated (a) provisionally,
|
|
unless and until the copyright holder explicitly and finally
|
|
terminates your license, and (b) permanently, if the copyright holder
|
|
fails to notify you of the violation by some reasonable means prior to
|
|
60 days after the cessation.
|
|
|
|
<p>Moreover, your license from a particular copyright holder is
|
|
reinstated permanently if the copyright holder notifies you of the
|
|
violation by some reasonable means, this is the first time you have
|
|
received notice of violation of this License (for any work) from that
|
|
copyright holder, and you cure the violation prior to 30 days after
|
|
your receipt of the notice.
|
|
|
|
<p>Termination of your rights under this section does not terminate the
|
|
licenses of parties who have received copies or rights from you under
|
|
this License. If your rights have been terminated and not permanently
|
|
reinstated, receipt of a copy of some or all of the same material does
|
|
not give you any rights to use it.
|
|
|
|
<li>FUTURE REVISIONS OF THIS LICENSE
|
|
|
|
<p>The Free Software Foundation may publish new, revised versions
|
|
of the GNU Free Documentation License from time to time. Such new
|
|
versions will be similar in spirit to the present version, but may
|
|
differ in detail to address new problems or concerns. See
|
|
<a href="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</a>.
|
|
|
|
<p>Each version of the License is given a distinguishing version number.
|
|
If the Document specifies that a particular numbered version of this
|
|
License “or any later version” applies to it, you have the option of
|
|
following the terms and conditions either of that specified version or
|
|
of any later version that has been published (not as a draft) by the
|
|
Free Software Foundation. If the Document does not specify a version
|
|
number of this License, you may choose any version ever published (not
|
|
as a draft) by the Free Software Foundation. If the Document
|
|
specifies that a proxy can decide which future versions of this
|
|
License can be used, that proxy's public statement of acceptance of a
|
|
version permanently authorizes you to choose that version for the
|
|
Document.
|
|
|
|
<li>RELICENSING
|
|
|
|
<p>“Massive Multiauthor Collaboration Site” (or “MMC Site”) means any
|
|
World Wide Web server that publishes copyrightable works and also
|
|
provides prominent facilities for anybody to edit those works. A
|
|
public wiki that anybody can edit is an example of such a server. A
|
|
“Massive Multiauthor Collaboration” (or “MMC”) contained in the
|
|
site means any set of copyrightable works thus published on the MMC
|
|
site.
|
|
|
|
<p>“CC-BY-SA” means the Creative Commons Attribution-Share Alike 3.0
|
|
license published by Creative Commons Corporation, a not-for-profit
|
|
corporation with a principal place of business in San Francisco,
|
|
California, as well as future copyleft versions of that license
|
|
published by that same organization.
|
|
|
|
<p>“Incorporate” means to publish or republish a Document, in whole or
|
|
in part, as part of another Document.
|
|
|
|
<p>An MMC is “eligible for relicensing” if it is licensed under this
|
|
License, and if all works that were first published under this License
|
|
somewhere other than this MMC, and subsequently incorporated in whole
|
|
or in part into the MMC, (1) had no cover texts or invariant sections,
|
|
and (2) were thus incorporated prior to November 1, 2008.
|
|
|
|
<p>The operator of an MMC Site may republish an MMC contained in the site
|
|
under CC-BY-SA on the same site at any time before August 1, 2009,
|
|
provided the MMC is eligible for relicensing.
|
|
|
|
</ol>
|
|
|
|
<div class="node">
|
|
<a name="Index"></a>
|
|
<p><hr>
|
|
Previous: <a rel="previous" accesskey="p" href="#GNU-Free-Documentation-License">GNU Free Documentation License</a>,
|
|
Up: <a rel="up" accesskey="u" href="#Top">Top</a>
|
|
|
|
</div>
|
|
|
|
<h2 class="unnumbered">Index</h2>
|
|
|
|
<ul class="index-cp" compact>
|
|
<li><a href="#index-AntiFeatures-16">AntiFeatures</a>: <a href="#AntiFeatures">AntiFeatures</a></li>
|
|
<li><a href="#index-binary-3">binary</a>: <a href="#Simple-Binary-Repository">Simple Binary Repository</a></li>
|
|
<li><a href="#index-Build-Version-15">Build Version</a>: <a href="#Build-Version">Build Version</a></li>
|
|
<li><a href="#index-Description-12">Description</a>: <a href="#Description">Description</a></li>
|
|
<li><a href="#index-Disabled-17">Disabled</a>: <a href="#Disabled">Disabled</a></li>
|
|
<li><a href="#index-Donate-10">Donate</a>: <a href="#Donate">Donate</a></li>
|
|
<li><a href="#index-installation-1">installation</a>: <a href="#System-Requirements">System Requirements</a></li>
|
|
<li><a href="#index-Issue-Tracker-9">Issue Tracker</a>: <a href="#Issue-Tracker">Issue Tracker</a></li>
|
|
<li><a href="#index-license-5">license</a>: <a href="#License">License</a></li>
|
|
<li><a href="#index-metadata-4">metadata</a>: <a href="#Metadata">Metadata</a></li>
|
|
<li><a href="#index-Name-6">Name</a>: <a href="#Name">Name</a></li>
|
|
<li><a href="#index-Repo-14">Repo</a>: <a href="#Repo">Repo</a></li>
|
|
<li><a href="#index-Repo-Type-13">Repo Type</a>: <a href="#Repo-Type">Repo Type</a></li>
|
|
<li><a href="#index-Requires-Root-18">Requires Root</a>: <a href="#Requires-Root">Requires Root</a></li>
|
|
<li><a href="#index-setup_002c-installation-2">setup, installation</a>: <a href="#Setup">Setup</a></li>
|
|
<li><a href="#index-Source-Code-8">Source Code</a>: <a href="#Source-Code">Source Code</a></li>
|
|
<li><a href="#index-Summary-11">Summary</a>: <a href="#Summary">Summary</a></li>
|
|
<li><a href="#index-Web-Site-7">Web Site</a>: <a href="#Web-Site">Web Site</a></li>
|
|
</ul></body></html>
|
|
|