[Pkg-mono-svn-commits] rev 3789 - in web: . docs

David Paleino hanska-guest at alioth.debian.org
Sat Nov 22 23:39:21 UTC 2008


Author: hanska-guest
Date: 2008-11-22 23:39:21 +0000 (Sat, 22 Nov 2008)
New Revision: 3789

Added:
   web/docs/
   web/docs/policy.xml
Log:
Committing first Policy draft


Added: web/docs/policy.xml
===================================================================
--- web/docs/policy.xml	                        (rev 0)
+++ web/docs/policy.xml	2008-11-22 23:39:21 UTC (rev 3789)
@@ -0,0 +1,579 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<?xml-stylesheet type="text/xsl" href="http://docbook.sourceforge.net/release/xsl/current/html/docbook.xsl"?>
+<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">
+<article xml:base="http://pkg-mono.alioth.debian.org/">
+	<title>Debian Mono Group Policy</title>
+	<articleinfo>
+		<authorgroup>
+			<author>
+				<firstname>David</firstname>
+				<surname>Paleino</surname>
+				<contrib>Initial writing </contrib>
+				<email>d.paleino at gmail.com</email>
+			</author>
+		<releaseinfo>
+			$ policy.xml rev. @REV@ - @DATE@ (@AUTHOR@) $
+		</releaseinfo>
+	</articleinfo>
+	<mediaobject>
+		<objectinfo>
+			<title>Debian Mono Group</title>
+		</objectinfo>
+		<imageobject>
+			<imagedata fileref="/mono.png" format="JPG" align="center" />
+		</imageobject>
+	</mediaobject>
+	<sect1>
+		<title>Introduction</title>
+		<para>This group is, together with <tt>pkg-cli-apps</tt> and <tt>pkg-cli-libs</tt>,
+		meant to coordinate packaging work on Mono (CLI/.NET platform), MonoDoc, Gtk# and
+		other CLI application/library packages.</para>
+	</sect1>
+	<sect1>
+		<title>How to Contribute</title>
+		<para>Please contact us on <ulink url="mailto:pkg-mono-devel at lists.alioth.debian.org">pkg-mono-devel at lists.aliothdebian.org</ulink>,
+		or <ulink url="irc://irc.oftc.net/debian-mono">#debian-mono on OFTC</ulink>,
+		if you want to help us. Please read the <link linkend="membership">Membership</link>
+		section if you're interested in joining us.</para>
+		<para>If you speak a language other than English, you can contribute
+		rightaway with translations of package descriptions at
+		<ulink url="http://ddtp.debian.org">ddtp.debian.org</ulink>.</para>
+		<para>When working on these, you will find immediate targets for improvements
+		of the original English versions, too. For these, though, you need access
+		to our source code repositories.</para>
+		<sect2>
+			<title id="membership">Membership</title>
+			<para>To request membership to this group, please go on our Alioth pages:</para>
+			<itemizedlist>
+				<listitem>
+					<para>
+						<ulink url="http://alioth.debian.org/projects/pkg-mono">pkg-mono</ulink>,
+						if you want to hack on the general Mono framework;
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						<ulink url="http://alioth.debian.org/projects/pkg-cli-apps">pkg-cli-apps</ulink>,
+						if you want to host a CLI application with us;
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						<ulink url="http://alioth.debian.org/projects/pkg-cli-libs">pkg-cli-libs</ulink>,
+						if you want to host a CLI library with us.
+					</para>
+				</listitem>
+			</itemizedlist>
+			<para>Remember that you must have an Alioth account before requesting
+			membership (see <ulink url="http://alioth.debian.org/account/register.php">here</ulink>
+			to request an Alioth account).</para>
+		</sect2>
+		<sect2>
+			<title id="readings">Essential readings</title>
+			<itemizedlist>
+				<listitem>
+					<para>The <ulink url="http://www.debian.org/doc/debian-policy/">Debian Policy</ulink>: packages must conform to 
+					it.</para>
+				</listitem>
+				<listitem>
+					<para>The <ulink url="http://www.debian.org/doc/developers-reference/">Developers' Reference</ulink>: details best packaging 
+					practices.</para>
+				</listitem>
+				<listitem>
+					<para>The <ulink url="http://www.debian.org/doc/maint-guide/">New Maintainer's Guide</ulink>: puts a bit of the two above in 
+					practice.</para>
+				</listitem>
+				<listitem>
+					<para>The <ulink url="http://pkg-mono.alioth.debian.org/docs/policy.html">Debian Mono Policy</ulink> (this document): explains 
+					how the work is organized in our team.</para>
+				</listitem>
+				<listitem>
+					<para>The <ulink url="http://pkg-mono.alioth.debian.org/cli-policy/">Official Debian CLI Policy</ulink>: lays out basic
+					policies regarding packaging Mono, other CLRs and CLI based applications/libraries on Debian GNU/Linux.</para>
+				</listitem>
+			</itemizedlist>
+		</sect2>
+	</sect1>
+	<sect1>
+		<title>Subversion</title>
+		<para>Our Subversion (SVN) repository is currently hosted on
+		<ulink url="http://alioth.debian.org/">Alioth</ulink>, the hosting
+		facility provided by Debian to free software developers. You can have a look at
+		the repository through Alioth's web interfaces:</para>
+		<itemizedlist>
+			<listitem>
+				<para>pkg-mono &mdash;
+					<ulink url="http://svn.debian.org/wsvn/pkg-mono/?rev=0&amp;sc=0">wsvn</ulink> or
+					<ulink url="http://svn.debian.org/viewsvn/pkg-mono">viewsvn</ulink>;
+				</para>
+			</listitem>
+			<listitem>
+				<para>pkg-cli-apps &mdash;
+					<ulink url="http://svn.debian.org/wsvn/pkg-cli-apps/packages/?rev=0&amp;sc=0">wsvn</ulink> or
+					<ulink url="http://svn.debian.org/viewsvn/pkg-cli-apps/packages/">viewsvn</ulink>;
+				</para>
+			</listitem>
+			<listitem>
+				<para>pkg-cli-libs &mdash;
+					<ulink url="http://svn.debian.org/wsvn/pkg-cli-libs/packages/?rev=0&amp;sc=0">wsvn</ulink> or
+					<ulink url="http://svn.debian.org/viewsvn/pkg-cli-libs/packages/">viewsvn</ulink>;
+				</para>
+			</listitem>
+		</itemizedlist>
+		<sect2>
+			<title>Give me the source!</title>
+			<para>
+				To check sources out from SVN, please do:
+				<itemizedlist>
+					<listitem>
+						<para>If you are a member of our teams (or a Debian developer, for pkg-cli-apps and pkg-cli-libs), you have write 
+						permission (adjust the URL properly):</para>
+						<blockquote>
+							<para><userinput>
+								<command>svn co</command> <filename class="directory">svn+ssh://user@alioth.debian.org/svn/&lt;group&gt;/...</filename>
+							</userinput></para>
+						</blockquote>
+					</listitem>
+					<listitem>
+						<para>For read-only access, the syntax is slightly different:</para>
+						<blockquote>
+							<para><userinput>
+								<command>svn co</command> <filename class="directory">svn://svn.debian.org/svn/&lt;group&gt;/...</filename>
+							</userinput></para>
+						</blockquote>
+					</listitem>
+				</itemizedlist>
+			</para>
+			<para>
+				Another way to check the sources is through the use of the
+				<command>debcheckout</command> command, from the
+				<ulink url="http://packages.debian.org/devscripts">devscripts</ulink>
+				package.
+			</para>
+		</sect2>
+		<sect2>
+			<title>Repository structure</title>
+			<para>The SVN repositories are structured as follows:
+				<literallayout>
+					<code>
+pkg-mono/
+ ├ &lt;package A&gt;/
+ │  ├ branches/
+ │  ├ tags/
+ │  └ trunk/
+ │    └ debian/
+ ├ &lt;package B&gt;/
+ │  ├ branches/
+ │  ├ tags/
+ │  └ trunk/
+ │     └ debian/
+ ├ …
+ │
+ ├ scripts/
+ └ web/
+pkg-cli-apps/
+ └ packages/
+    ├&lt;package A&gt;/
+    │  ├ branches/
+    │  ├ tags/
+    │  └ trunk/
+    │    └ debian/
+    ├ &lt;package B&gt;/
+    │  ├ branches/
+    │  ├ tags/
+    │  └ trunk/
+    │     └ debian/
+    └ …
+pkg-cli-libs/
+ └ packages/
+    ├&lt;package A&gt;/
+    │  ├ branches/
+    │  ├ tags/
+    │  └ trunk/
+    │    └ debian/
+    ├ &lt;package B&gt;/
+    │  ├ branches/
+    │  ├ tags/
+    │  └ trunk/
+    │     └ debian/
+    └ …</code>
+				</literallayout>
+			</para>
+		</sect2>
+	</sect1>
+	<sect1>
+		<title>Packaging</title>
+		<sect2>
+			<title>Announcing intent to package</title>
+			<para>If you intent to work on a Debian package you should follow
+			the <ulink url="http://www.debian.org/devel/wnpp/#l1">normal Debian rules</ulink> and file a <acronym>WNPP</acronym> bug report.</para>
+			<para>It is a good idea to keep the mailing list
+			<ulink url="mailto:pkg-mono-devel at lists.alioth.debian.org">pkg-mono-devel at lists.aliothdebian.org</ulink>
+			<ulink url="http://www.debian.org/Bugs/Reporting#xcc"> in CC</ulink> and to set it
+			as the owner of the ITP	to keep your co-workers informed. This will ensure that we notice
+			if for some reason the package has not been uploaded, when the ITP bug is
+			<ulink url="http://lists.debian.org/debian-devel-announce/2005/09/msg00014.html">
+			automatically closed</ulink> one year later.</para>
+		</sect2>
+	</sect1>
+	<sect1>
+		<title>Policy</title>
+		<sect2>
+			<title><filename>debian/control</filename></title>
+			<orderedlist>
+				<listitem>
+				<formalpara>
+					<title>Section</title>
+					<para>Should be appropriate to the kind of package.</para>
+				</formalpara>
+				</listitem>
+				<listitem>
+				<formalpara>
+					<title>Priority</title>
+					<para>Should be <quote>optional</quote> unless forbidden by the Debian policy (see section 2.5). Packages of priority <quote>extra</quote> are excluded from some QA tests.</para>
+				</formalpara>
+				</listitem>
+				<listitem>
+				<formalpara>
+					<title>Maintainer</title>
+					<para>Maintainer should be Debian Mono Group <email>pkg-mono-group at lists.alioth.debian.org</email>, Debian CLI Applications Team <email>pkg-cli-apps-team at lists.alioth.debian.org</email> or Debian CLI Libraries Team <email>pkg-cli-libs-team at lists.alioth.debian.org</email>, according to where your package resides. Please subscribe to our mailing list <email>pkg-mono-devel at lists.alioth.debian.org</emaiL> if you list yourself in the <code>Uploaders:</code> field of one of our packages. You can refer to our QA pages (<ulink url="http://qa.debian.org/developer.php?login=pkg-mono-group@lists.alioth.debian.org">pkg-mono</ulink>, <ulink url="http://qa.debian.org/developer.php?login=pkg-cli-apps-team@lists.alioth.debian.org">pkg-cli-apps</ulink>, <ulink url="http://qa.debian.org/developer.php?login=pkg-cli-libs-team@lists.alioth.debian.org">pkg-cli-libs</ulink>) to gather information about the packages.</para>
+				</formalpara>
+				</listitem>
+				<listitem>
+				<formalpara>
+					<title>Upload by Debian Maintainers</title>
+					<para>Should be enabled with the field <code>DM-Upload-Allowed: yes</code>. This means that when an Uploader becomes Debian Maintainer, he will immediately get the possibility to upload the package to Debian. Please consider this when you sponsor packages in which some Uploaders are added.</para>
+				</formalpara>
+				</listitem>
+				<listitem>
+				<formalpara>
+					<title>Uploaders</title>
+					<para>Please add yourself as an Uploader when you have a significant interest in a package. Being Uploader means that you are expected to answer to the bug reports. It is totally acceptable to do some QA work on a package without adding oneself to the Uploaders field.</para>
+				</formalpara>
+				</listitem>
+				<listitem>
+				<formalpara>
+					<title>Standards-Version</title>
+					<para>Please always use the latest unless there are concerns for backporting. If no changes are needed, please indicate this fact in the changelog, and increment the value of the field.</para>
+				</formalpara>
+				</listitem>
+				<listitem>
+				<formalpara>
+					<title>Homepage</title>
+					<para>should be documented whenever possible</para>
+				</formalpara>
+				</listitem>
+				<listitem>
+				<formalpara>
+					<title>Vcs-Svn: and Vcs-Browser:</title>
+					<para>Please use the following template:</para>
+					<programlisting>
+Vcs-Svn: svn://svn.debian.org/svn/&lt;group&gt;/.../trunk/
+Vcs-Browser: http://svn.debian.org/wsvn/&lt;group&gt;/.../&lt;package&gt;/trunk/?rev=0&amp;sc=0
+					</programlisting>
+				</formalpara>
+				</listitem>
+			</orderedlist>
+		</sect2>
+		<sect2>
+			<title><filename>debian/copyright</filename></title>
+			<para>We use the <ulink url="http://wiki.debian.org/Proposals/CopyrightFormat">proposed machine-readable format</ulink> for the <filename>debian/copyright</filename> file. Please list yourself in the <computeroutput>Files: debian/*</computeroutput> section if you think that your contributions are not trivial and therefore subjected to copyright. Please chose a license that is compatible with the program you package. You can also use <quote>same as if it were in the public domain</quote> or <quote>same as the packaged program itself</quote>.</para>
+		</sect2>
+		<sect2>
+			<title><filename>debian/changelog</filename></title>
+			<para>Packages hosted in our Subversion repositories, that have been modified but not uploaded must use <emphasis>UNRELEASED</emphasis> as a distribution name. This can be done automatically by declaring <emphasis>DEBCHANGE_RELEASE_HEURISTIC=changelog</emphasis> in <filename>~/.devscripts</filename> and using <command>dch</command>.</para>
+		</sect2>
+		<sect2>
+			<title>Debhelper</title>
+			<para>Debhelper uses compatibility levels to control the behaviour of its commands. The latest level is not always available in <emphasis>Stable</emphasis> or <emphasis>Backports</emphasis>. Please avoid using it unless needed until it is available, to facilitate backporting. We currently recommend to use the level <emphasis>6</emphasis>.</para>			
+		</sect2>
+		<sect2>
+			<title>CDBS</title>
+			<para>The use of CDBS is welcome as it helps us to factorize our code. Nevertheless, please do not use complex CDBS for non-trivial packages, so that other developers can quickly understand the package when doing QA work.</para>
+			<para>It is technically possible to build CDBS packages using Debhelper without the <filename>debian/compat</filename> file. Please do not, and always include such a file according to the above guidelines.</para>
+		</sect2>
+		<sect2>
+			<title>Injecting a new package</title>
+			<para>To inject a new package to the SVN repositories, you must have
+			write access to it; i.e. you must be a member of <emphasis>pkg-mono</emphasis>, <emphasis>pkg-cli-apps</emphasis>
+			or <emphasis>pkg-cli-libs</emphasis> groups on Alioth.</para>
+			<para>You can inject a new package only after successfully building
+			it with <command>dpkg-buildpackage</command> (or any wrapper around it). We use the MergeWithUpstream workflow, so please keep all the modifications in the <filename>debian</filename> directory, and use the <option>-o</option> of <command>svn-buildpackage</command>, as in the following example:</para>
+			<blockquote>
+				<para><userinput>
+					<command>svn-inject</command>
+					<option>-o</option>
+					<filename>package.dsc</filename>
+					<filename class="directory">svn+ssh://user@alioth.debian.org/svn/&lt;group&gt;/.../</filename>
+				</userinput></para>
+			</blockquote>
+			<para>(the ... used in the URL above should be the parent directory of where other &lt;package&gt; directories are: that is: <emphasis>/</emphasis> for pkg-mono, and <emphasis>packages/</emphasis> for pkg-cli-apps and pkg-cli-libs).</para>
+			<para>The <command>svn-inject</command> command is found in the
+			<command>svn-buildpackage</command> package (just
+			<command>apt-get</command> it).</para>
+		</sect2>
+		<sect2>
+			<title>Building the packages</title>
+			<para>To build the package, just use the tools that <command>svn-buildpackage</command>
+			carries. First of all, we suggest you to define some aliases for the
+			most common commands:</para>
+			<blockquote>
+				<programlisting>alias svn-b='svn-buildpackage -us -uc -rfakeroot --svn-ignore'
+alias svn-br='svn-b --svn-dont-purge --svn-reuse'
+alias svn-bt='svn-buildpackage --svn-tag -rfakeroot'</programlisting>
+			</blockquote>
+			<para>Checkout the sources (see the proper section).</para>
+			<para>Once done, you're ready to do the work. First, cd to the trunk
+			directory, and download the upstream sources (if there is a
+			<filename>debian/watch</filename> file):</para>
+			<blockquote>
+				<para><userinput>
+					<command>echo "origDir=.." &gt;&gt; .svn/deb-layout &amp;&amp; uscan --force-download</command>
+				</userinput></para>
+			</blockquote>
+			<para>Alternatively, you can try this, it depends on how the package
+			was built (again, from the <filename class="directory">trunk/</filename> directory):</para>
+			<blockquote>
+				<para><userinput>
+					<command>debian/rules get-orig-source</command>
+				</userinput></para>
+			</blockquote>
+			<para>Once done, edit the files you need, and then build the package with
+			<command>svn-b</command> or <command>svn-br</command>.</para>
+			<para>If you're a team member, you can commit your changes:</para>
+			<blockquote>
+				<para><userinput>
+					<command>svn commit</command>
+				</userinput></para>
+			</blockquote>
+			<para>(also <command>svn ci</command>).</para>
+			<para>Otherwise, you can ask to be added to the group (see the Membership
+			section), or send the result of svn diff to the
+			<ulink url="mailto:pkg-mono-devel at lists.alioth.debian.org">mailing list</ulink>
+			(<command>gzip -9</command> it, if it's too large).</para>
+		</sect2>
+		<sect2>
+			<title>Tagging packages</title>
+			<para>It may happen that a package version has been uploaded to Debian
+			repositories, and you forgot to tag the last build with</para>
+			<blockquote>
+				<para><userinput>
+					<command>svn-buildpackage --svn-tag</command>
+				</userinput></para>
+			</blockquote>
+			<para>
+				You can tag this package also retroactively. A first step, creating
+				the tags directory, can be achieved in two ways:
+				<itemizedlist>
+					<listitem>
+						<para>create it locally (it is a sibling of <filename class="directory">trunk/</filename>), and commit:</para>
+						<blockquote>
+							<para><userinput>
+								<command>svn mkdir</command> <filename class="directory">tags</filename>
+							</userinput></para>
+							<para><userinput>
+								<command>svn commit</command>
+							</userinput></para>
+						</blockquote>
+					</listitem>
+					<listitem>
+						<para>create it remotely:</para>
+						<blockquote>
+							<para><userinput>
+								<command>svn mkdir</command> <filename class="directory">svn+ssh://user@svn.debian.org/svn/&lt;group&gt;/.../&lt;package&gt;/tags</filename>
+							</userinput></para>
+						</blockquote>
+					</listitem>
+				</itemizedlist>
+			</para>
+			<para>After the tags directory has been created, you're ready to tag the
+			package:</para>
+			<blockquote>
+				<para><userinput>
+					<command>svn-buildpackage --svn-tag-only --svn-no-autodch</command>
+				</userinput></para>
+			</blockquote>
+			<para>(--svn-no-autodch avoids <filename>debian/changelog</filename> to be marked as UNRELEASED).</para>
+		</sect2>
+		<sect2>
+			<title>Handling patches</title>
+			<para>Often happens that the upstream code doesn't fit well into the
+			Debian distribution: be this wrong paths, missing features, anything
+			that implies editing the source files. When you directly edit
+			upstream's source files, your changes will be put into a .diff.gz file,
+			which should instead contain only debian. To better organise the patches
+			and group the by function, please use a patch handling system which keeps
+			patches under the <filename class="directory">debian/patches</filename>
+			directory.</para>
+			<para>The most known are <command>quilt</command>, <emphasis>simple-patchsys</emphasis>
+			(from the <emphasis>CDBS</emphasis> package) and <command>dpatch</command>.
+			Please don't use any other patch system in our team, unless absolutely
+			necessary.</para>
+			<sect3>
+				<title>Using <command>quilt</command></title>
+				<para>Using quilt is rather easy.</para>
+				<para>First, make sure you have correctly setup quilt: open
+				<filename>.quiltrc</filename> in your home directory (create
+				it if you don't have one), and make sure it looks like this:</para>
+				<blockquote>
+					<programlisting>QUILT_DIFF_ARGS="--no-timestamps --no-index"
+QUILT_REFRESH_ARGS="--no-timestamps --no-index"
+QUILT_PATCH_OPTS="--unified-reject-files"
+QUILT_PATCHES="debian/patches"</programlisting>
+				</blockquote>
+				<para>After this, you're ready to start working with quilt.</para>
+				<sect4>
+					<title>Creating a patch</title>
+					<para>To create a patch, use the <command>new</command> command.
+					Run:</para>
+					<blockquote>
+						<para><userinput>
+							<command>quilt new</command> <filename>&lt;patch_name&gt;.patch</filename>
+						</userinput></para>
+					</blockquote>
+					<para>This will create (if it doesn't exist yet) a
+					<filename>debian/patches/series</filename> file, which
+					contains all the patches to be applied by quilt. Moreover,
+					the new patch is also the topmost (the currently
+					applied).</para>
+					<para>Now start editing files, with:</para>
+					<blockquote>
+						<para><userinput>
+							<command>quilt edit</command> <filename>&lt;file&gt;</filename>
+						</userinput></para>
+					</blockquote>
+					<para>and repeat the process for each file the patch is
+					involved with. At the end, run</para>
+					<blockquote>
+						<para><userinput>
+							<command>quilt refresh</command>
+						</userinput></para>
+					</blockquote>
+					<para>This will compare the noted state of the edited files
+					with the current state, and will produce a patch in
+					<filename>debian/patches</filename>. Remember: the patch
+					is currently applied (you can check this with
+					<command>quilt applied</command>).</para>
+				</sect4>
+				<sect4>
+					<title>Applying and unapplying patches</title>
+					<para>Just two easy commands to do the job:</para>
+					<itemizedlist>
+						<listitem><para><command>quilt pop</command> will unapply the topmost patch.</para></listitem>
+						<listitem><para><command>quilt push</command> will apply the next patch in debian/patches/series.</para></listitem>
+					</itemizedlist>
+					<para>You can just add a "-a" flag to the commands above, to
+					respectively apply/unapply all patches in the series.</para>
+					<tip>
+						<para>You can check which patches are applied/unapplied
+						with, respectively, <command>quilt applied</command> and
+						<command>quilt unapplied</command>.</para>
+					</tip>
+				</sect4>
+				<sect4>
+					<title>Editing patches</title>
+					<para>To edit a patch, first make it the topmost:</para>
+					<blockquote>
+						<para><userinput>
+							<command>quilt push</command> <filename>&lt;patch_name&gt;</filename>
+						</userinput></para>
+					</blockquote>
+					<para>If the patch is already applied, but is not the topmost,
+					run <command>quilt pop</command> until it becomes the currently
+					applied one.</para>
+					<para>You can now run <command>quilt edit</command> on the files
+					you want to change, and, when you're done, <command>quilt
+					refresh</command>.</para>
+				</sect4>
+				<sect4>
+					<title>Renaming patches</title>
+					<para>Sometimes it's useful to rename a patch. Without
+					any hassle, do:</para>
+					<blockquote>
+						<para><userinput>
+							<command>quilt rename -P</command> <filename>&lt;old_name&gt;.patch</filename>
+							<filename>&lt;new_name&gt;.patch</filename>
+						</userinput></para>
+					</blockquote>
+				</sect4>
+				<sect4>
+					<title>Other commands</title>
+					<para>Please see <command>man 1 quilt</command> to have a
+					comprehensive list of commands.</para>
+				</sect4>
+				<sect4>
+					<title>Integration in the build process</title>
+					<para>Add in the very first part of <filename>debian/rules</filename>
+					(i.e. before the targets), the line:</para>
+					<blockquote>
+						<programlisting>include <filename class="headerfile">/usr/share/quilt/quilt.make</filename></programlisting>
+					</blockquote>
+					<para>Please use this to import patch and unpatch rules instead of
+					writing them, and remember to add the needed dependencies to its
+					targets:</para>
+					<blockquote>
+						<programlisting>...
+build: $(QUILT_STAMPFN) build-stamp
+build-stamp: configure
+...</programlisting>
+					</blockquote>
+					<para>This kind of dependency will ensure that if you also
+					patch the build system, you get a working patched build
+					process.</para>
+					<caution>
+						<para>Don't also put configure as a dependency of
+						build (leave it in build-stamp): that may cause problems
+						during parallel buildings (i.e. the -j flag of make).</para>
+					</caution>
+					<para>Now add a dependency to the clean target:</para>
+					<blockquote>
+						<programlisting>...
+clean: unpatch
+...</programlisting>
+					</blockquote>
+					<para>If you've also patched the build system, using upstream's
+					clean target might fail. This is what you should do:</para>
+					<blockquote>
+						<programlisting>...
+clean: clean-patched unpatch
+clean-patched:
+...</programlisting>
+					</blockquote>
+					<para>Obviously, you could always use an approach like this,
+					but it's an useless complication if you don't patch the build
+					system, and you should keep <filename>debian/rules</filename>
+					the simplest you can.</para>
+				</sect4>
+			</sect3>
+			<sect3>
+				<title>Using <command>dpatch</command></title>
+				<sect4>
+					<title>Creating a patch</title>
+					<para>dpatch-edit-patch</para>
+				</sect4>
+				<sect4>
+					<title>Applying and unapplying patches</title>
+					<para>apply(-all), unapply(-all), status</para>
+				</sect4>
+				<sect4>
+					<title>Editing patches</title>
+					<para>dpatch-edit-patch</para>
+				</sect4>
+				<sect4>
+					<title>Renaming patches</title>
+					<para>Is this possible?</para>
+				</sect4>
+				<sect4>
+					<title>Other commands</title>
+					<para>Please see <command>man 1 dpatch</command> for a
+					comprehensive list of commands.</para>
+				</sect4>
+				<sect4>
+					<title>Integration in the build process</title>
+					<para>Follow the instructions for quilt and adapt the path of
+					inclusion to <filename class="headerfile">/usr/share/dpatch/dpatch.make</filename></para>
+				</sect4>
+			</sect3>
+		</sect2>
+	</sect1>
+</article>




More information about the Pkg-mono-svn-commits mailing list