/usr/share/doc/svn-buildpackage/html/ch03s03.html is in svn-buildpackage 0.8.6.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Using svn-buildpackage with native packages</title><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"><link rel="home" href="index.html" title="svn-buildpackage - maintaining Debian packages with Subversion"><link rel="up" href="ch03.html" title="Chapter 3. Importing Debian packages"><link rel="prev" href="ch03s02.html" title="On-Build-Time merging"><link rel="next" href="ch04.html" title="Chapter 4. Common tasks"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Using <span class="command"><strong>svn-buildpackage</strong></span> with native packages</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s02.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Importing Debian packages</th><td width="20%" align="right"> <a accesskey="n" href="ch04.html">Next</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm322"></a>Using <span class="command"><strong>svn-buildpackage</strong></span> with native packages</h2></div></div></div><p>A native package is designed to work with Debian rather than
general GNU/Linux distributions, many depend directly on specific
Debian behaviour or other Debian native tools. <span class="emphasis"><em>svn-buildpackage</em></span>
is one such native package.
</p><p>With a native package, the contents of the <code class="filename">debian/</code>
directory are included in the source tarball (which uses a plain
<code class="filename">.tar.gz</code> suffix not the <code class="filename">.orig.tar.gz</code>
suffix) and no <code class="filename">.diff.gz</code> is generated.
</p><p>The principal marker for a native package is the Debian version
string. An upstream package uses:
</p><pre class="programlisting">
foo (0.1.2-3)
</pre><p>A native package uses:</p><pre class="programlisting">
foo (0.1.2)
</pre><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idm336"></a>Compiled native packages</h3></div></div></div><p>Some native packages are compiled from source code and a lot of
these packages use autotools like <code class="filename">./configure</code>,
<span class="command"><strong>autoreconf</strong></span> and <span class="command"><strong>make dist</strong></span>. Such
packages can use autotools support to generate a typical GNU or autotools
style tarball with support for <span class="emphasis"><em>EXTRA_DIST</em></span> and
similar rules in <code class="filename">Makefile.am</code>. This allows the maintainers
to not need to keep generated files (<code class="filename">configure</code>,
<code class="filename">aclocal.m4</code>, <code class="filename">ltmain.sh</code> and
<code class="filename">libtool</code>) in the subversion repository. With this
support, the package can directly control which files are included into
the source for the native package.
</p><p>To build such packages with <span class="command"><strong>svn-buildpackage</strong></span>,
<span class="emphasis"><em>mergeWithUpstream</em></span> can be used even if the Debian
version string indicates a native package. The upstream tarball is the
one created by the <span class="command"><strong>make dist</strong></span> target and the maintainer
can choose how to make that tarball available to
<span class="command"><strong>svn-buildpackage</strong></span>:
</p><div class="example"><a name="idm353"></a><p class="title"><b>Example 3.4. Using a native tarball and mergeWithUpstream</b></p><div class="example-contents"><p>Makefile.am</p><pre class="programlisting">
all-local: Makefile
ln -sf $(PACKAGE)-$(VERSION).tar.gz $(PACKAGE)_$(VERSION).orig.tar.gz
</pre><p>(Yes, this is an artefact of using mergeWithUpstream.
The <code class="filename">.orig.tar.gz</code> is not actually used - the Debian version string overrides
the merge property.)</p></div></div><br class="example-break"><p>SVN properties:</p><pre class="programlisting">
$ svn proplist ./debian/
Properties on 'debian':
mergeWithUpstream
</pre><div class="example"><a name="idm361"></a><p class="title"><b>Example 3.5. Output of using mergeWithUpstream inside a native package</b></p><div class="example-contents"><p>The tarball generated by <span class="command"><strong>make dist</strong></span> is
located using the <span class="emphasis"><em>origDir</em></span> property, in this
example, set to the top level package directory where
<span class="command"><strong>make dist</strong></span> would normally create it and where the
symlink is also created, as above.</p><p><span class="command"><strong>svn-buildpackage</strong></span> output:</p><p>(using langupdate as the example package)</p><pre class="programlisting">
$ svn-buildpackage -us -uc
origDir: ./
Complete layout information:
buildArea=/opt/working/emdebian/host/trunk/langupdate/build-area
origDir=./
tagsDir=/opt/working/emdebian/host/trunk/langupdate/tags
tagsUrl=svn+ssh://codehelp@buildd.emdebian.org/var/emdebian/svn/current/host/trunk/langupdate/tags
trunkDir=/opt/working/emdebian/host/trunk/langupdate/trunk
trunkUrl=svn+ssh://codehelp@buildd.emdebian.org/var/emdebian/svn/current/host/trunk/langupdate/trunk
mergeWithUpstream mode detected, looking for .//langupdate_0.1.1.orig.tar.gz
I: mergeWithUpstream property set, looking for upstream source tarball...
tar --no-same-owner --no-same-permissions --extract --gzip --file /opt/working/emdebian/host/trunk/langupdate/trunk/langupdate-0.1.1.tar.gz --directory <1 more argument>
mv /opt/working/emdebian/host/trunk/langupdate/build-area/tmp-0.15173904069616/langupdate-0.1.1 /opt/working/emdebian/host/trunk/langupdate/build-area/langupdate-0.1.1
svn --force export /opt/working/emdebian/host/trunk/langupdate/trunk /opt/working/emdebian/host/trunk/langupdate/build-area/langupdate-0.1.1
Export complete.
</pre><p>Note how the tarball (created by <span class="command"><strong>make dist</strong></span> and
located by <span class="emphasis"><em>mergeWithUpstream</em></span> due to the symlink)
is unpacked and then the exported SVN is applied on top. This allows
maintainers to test local changes using <code class="option">--svn-ignore</code>.
</p></div></div><br class="example-break"></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idm375"></a>Native packages not using autotools</h3></div><div><h4 class="subtitle">The useNativeDist property.</h4></div></div></div><p>When <span class="command"><strong>make dist</strong></span> is not available, there are still
situations where generated files may need to be included into the source
tarball of the native package. <span class="command"><strong>svn-buildpackage</strong></span> supports
the <span class="emphasis"><em>useNativeDist</em></span> SVN property (applied to the
<code class="filename">./debian/</code> directory) which allows for customised
<span class="command"><strong>make native-dist</strong></span> target to be run immediately
after the svn export.
</p><div class="example"><a name="idm384"></a><p class="title"><b>Example 3.6. The useNativeDist property.</b></p><div class="example-contents"><p><span class="command"><strong>svn-buildpackage</strong></span> uses this feature to include
the POT file to aid translators. The custom <span class="command"><strong>make</strong></span> rule needs to be defined
in the top level <code class="filename">Makefile</code>:
</p><pre class="programlisting">
# adds the POT file to the source tarball
native-dist: Makefile
po4a-build --pot-only
</pre></div></div><br class="example-break"><p>The <span class="emphasis"><em>native-dist</em></span> target needs to be idempotent
and able to run straight from the SVN export. Any changes made by
running the target will be directly reflected in the source tarball.
Ensure that no files are removed that would prevent the package being
built as a normal Debian package, using only the resulting source
package. (e.g. <span class="command"><strong>cd</strong></span> into the <code class="filename">build-area</code>,
unpacking the <code class="filename">.dsc</code> with
<span class="command"><strong>dpkg-source -x</strong></span> and rebuild the package, then
remove the test directory.)
</p><p>The net result is that the resulting source tarball includes the
<code class="filename">po/svn-buildpackage.pot</code> generated by the
<span class="emphasis"><em>make native-dist</em></span> target without needing to
add the generated POT file to SVN (and requiring repeated commits each
time the POT file is timestamped).
</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch03s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch03.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">On-Build-Time merging </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 4. Common tasks</td></tr></table></div></body></html>
|