Provided by: dpatch_2.0.39_all bug

NAME

       dpatch - patch maintenance system for Debian

SYNOPSIS

       dpatch [options] command [command-arguments]

DESCRIPTION

       dpatch  is an easy to use patch system for Debian packages, somewhat similar to the dbs package, but much
       simpler to use.

       It lets you store patches and other simple customization templates in debian/patches and  otherwise  does
       not  require much reorganization of your source tree. To get the patches applied at build time you simply
       need to include a makefile snippet and then depend on the patch/unpatch target  in  the  build  or  clean
       stage of debian/rules. For added flexibility, you can call /usr/bin/dpatch directly too.

WARNING

       dpatch  is  deprecated,  please  switch  to  the  `3.0 (quilt)' Debian source package format instead. See
       http://wiki.debian.org/Projects/DebSrc3.0#FAQ for a short guide on how to do it.

GLOBAL OPTIONS

       There are a few options which change the overall behaviour of dpatch, and have an effect on not only one,
       but most of the available commands.

       These global options are:

       --workdir (-d) DIRECTORY
              By  default,  dpatch applies patches to the source tree it was run from. With this option, one can
              change that, and tell dpatch to work on a different tree, although taking the  dpatches  from  the
              current one.

              Note  that  this will only pass a second argument to dpatch scriptlets, and will not change to the
              specified directory. To do that, use the --chdir option explained below.

       --chdir (-c)
              When using a different working directory than the current one, change there before trying to apply
              patches.

              This should be used together with the --workdir option.

       --strict (-S)
              Enable strict mode, which means that dpatch will bail out early even on warnings (like when trying
              to apply a patch which is already applied - normally it will simply skip it).

       --force (-F)
              Force the application or deapplication of patches, even if dpatch would normally skip them because
              the operation was already done earlier.

       --with-cpp
              Force  the  use  of  cpp.  Overrides use of DPATCH_OPTION_CPP=1 option in debian/patches/00options
              file.

COMMANDS

   Patch handling commands
       There is a generic syntax for all patch handling commands, namely that, that the command itself  takes  a
       list  of  dpatch  names  to work with, then does what it is meant to do on all of them, in the exact same
       order it was specified on the command line.

       Then, there is a version of each patch handling command with an -all suffix,  which  does  not  take  any
       arguments, and performs the necessary action for each and every available dpatch.

       The  last  variation is a command with a -until or -up-to suffix, which takes only one argument: the name
       of a dpatch. The appropriate action will be performed on all dpatches up to and including this  specified
       one.

       apply [options]
       patch [options]
              Applies  one  or more dpatches to the working tree (the current directory, if not told otherwise).
              By default the specified patches will be applied in the exact same order they were specified.

              Options
                     --stampdir=directory, -s=directory
                            Put stamp files into directory instead of the default debian/patched.
                     --help (-h)
                            Print a short help message about the command.
                     --quiet (-q)
                            Forces the command to not print anything.
                     --verbose (-v)
                            Disables hiding of the scriptlet output.

       deapply [options]
       unpatch [options]
              Deapplies one or more dpatches to the working tree (the current directory, if not told otherwise).
              By default the specified patches will be deapplied in the reverse order they were specified as one
              generally should deapply in reverse order (compared to the apply order, that is).

              Options
                     --stampdir=directory, -s=directory
                            Use stamp files in directory instead of the default debian/patched.
                     --help (-h)
                            Print a short help message about the command.
                     --quiet (-q)
                            Forces the command to not print anything.
                     --verbose (-v)
                            Disables hiding of the scriptlet output.

       cat [options]
              Print meta-information about a dpatch, such as its name, author and description (any of which  can
              be disabled with the appropriate option).

              Options
                     --no-meta, --desc-only (-nm, -d)
                            Only print the patch description.
                     --author-only (-a)
                            Only print the author of the patch.
                     --no-desc, (-nd)
                            Do not print the patch description.
                     --help (-h)
                            Print a short help message about the command.
                     --quiet (-q)
                            Forces the command to not print anything.

       list [options]
              List  the  name  of  the  given  patches.  This commands is not really useful, except the list-all
              variant, which lists all available patches.

              Options
                     --help (-h)
                            Print a short help message about the command.

       status [options]
              Prints the status of the given patches - whether they are applied to the working tree or not.

              Options
                     --stampdir=directory, -s=directory
                            Use stamp files in directory instead of the default debian/patched.
                     --help (-h)
                            Print a short help message about the command.
                     --quiet (-q)
                            Forces the command to not print anything.

       log [options]
              Displays the log of the given patching attempts.

              Options
                     --stampdir=directory, -s=directory
                            Use stamp files in directory instead of the default debian/patched.
                     --help (-h)
                            Print a short help message about the command.
                     --quiet (-q)
                            Forces the command to not print anything, but the logs without extra sugar on top.

       call [options]
              Call a dpatch with a user-specified argument. All arguments with a pkg- prefix is guaranteed to be
              unused by dpatch itself, and are reserved for use with this very command.

              This command is most useful for extracting custom meta-information from dpatch scriptlets.

              Options
                     --argument=arg (-a=arg)
                            Call patches with arg as argument.
                     --help (-h)
                            Print a short help message about the command.
                     --quiet (-q)
                            Forces the command to not print anything.

   Miscellaneous commands
       patch-template [options] [patchname] [description]
              Print  a quasi-standard dpatch script template, based on the information give on the command-line.
              If  a  description  given,  it  will  be  folded  at  about  72  characters  into  multiple  lines
              appropriately.

              When  prepending  the  template to STDIN, the contents of the standard input will be printed right
              after the template.

              Options
                     --prepend (-p)
                            Prepend the template to STDIN.
                     --help (-h)
                            Print a short help message about the command.

       help (--help, -h) [command]
              Attempt to give a little more detailed help about dpatch itself, or about a given dpatch command.

       version
              Prints the dpatch version number and exits.

DPATCH IN DEBIAN PACKAGES

       There are two  different  ways  to  use  dpatch  in  debian/rules:  calling  it  directly,  or  including
       dpatch.make(7). Only the former method will be described here - the latter has its own manual page.

       NOTE:  The following examples also require adding the .NOTPARALLEL flag to the head of debian/rules since
       the dependency lists rely on the order of the execution. Without .NOTPARALLEL, they execution  order  may
       be wrong with multiple make threads (the -j option).

       In  most  situations, one will want to run dpatch as soon during the build process, as possible. How that
       can be accomplished depends heavily on the  existing  debian/rules.  However,  in  common  practice  most
       packages  have  a  build  (or  build-stamp), config.status, or configure (or configure-stamp) target. The
       easiest way to make dpatching the very first thing, one only has to write a rule that calls  dpatch,  and
       add it to the list of prerequisites for the appropriate target (see above).

       Deapplying dpatches can be easy or a bit more tricky. If nothing in the clean rule touches files modified
       by dpatches (creating incompatible changes), you can safely add unpatch to the list of  the  clean  rules
       dependencies.

       If  the  patches  might  affect the build system, they should be deapplied after the source tree has been
       cleaned. To do this, rename the clean target to, say, clean-patched, write a rule that  calls  dpatch  to
       deapply the dpatches, and make a new clean rule that has clean-patched and unpatch as its prerequisites.

       Let  us  look at an example! First, let us look at the relevant parts of the original debian/rules of our
       imaginary package:

              config.status: configure
                   ./configure --prefix=/usr --mandir=/usr/share
              build: config.status
                   ${MAKE}
              clean:
                   $(testdir)
                   $(testroot)
                   ${MAKE} distclean
                   rm -rf debian/imaginary-package debian/files debian/substvars

       After dpatchifying, this would look like this:

              config.status: patch configure
                   ./configure --prefix=/usr --mandir=/usr/share
              build: config.status
                   ${MAKE}
              clean: clean-patched unpatch
              clean-patched:
                   $(testdir)
                   $(testroot)
                   ${MAKE} distclean
                   rm -rf debian/imaginary-package debian/files debian/substvars

              patch: patch-stamp
              patch-stamp:
                   dpatch apply-all
                   dpatch cat-all >patch-stamp

              unpatch:
                   dpatch deapply-all
                   rm -rf patch-stamp debian/patched

   Adding dpatch scriptlets to a package
       When using dpatch, one surely wants to tell the system what dpatches to apply, and which ones to discard.
       In the most common situation, one only needs to list the names of the dpatches (the filenames relative to
       debian/patches) in debian/patches/00list.  They usually have the extension .dpatch and the extension  can
       be   omitted,   thus   a  file  debian/patches/01_one_patch.dpatch  is  written  as  01_one_patch  inside
       debian/patches/00list

       However, there may be situations where something more flexible is needed, like applying the same patch on
       only two architectures, say, m68k and powerpc. One solve this in at least two very different ways: One is
       to list the same patch in both debian/patches/00list.m68k and debian/patches/00list.powerpc, the other is
       to  use  DPATCH_OPTION_CPP=1 in debian/patches/00options.  00list file is passed through cpp command with
       DEB_BUILD_ARCH variable set to the architecture, and DEB_BUILD_ARCH_architecture being set  to  1.   With
       cpp, our sample debian/patches/00list might look like this:

              01_manpage_typo
              #if defined(DEB_BUILD_ARCH_m68k) || defined(DEB_BUILD_ARCH_powerpc)
              /* This patch fixes a random build-time breakage on Macintosh boxen. */
              02_macintosh_foo
              #endif

   Creating dpatch scriptlets
       There  are  many  ways  to  create  dpatch  scriptlets. They are simple, executable files, which follow a
       standardised calling convention (documented in dpatch(7)).

       You can fire up your $EDITOR, or use dpatch-edit-patch, and you should be all set.

       For most cases, where the dpatch file is only to apply a simple patch, there is an even easier way:

              dpatch patch-template -p "01_some_patch" "A random patch" \
                   <random.diff >debian/patches/01_some_patch.dpatch

FILES

       debian/patches/00list
              The list of patches to apply, deapply, or otherwise fiddle with.

       debian/patches/00list.arch
              List of patches to work with - additionally to the common list in  debian/patches/00list  -,  when
              building on the arch architecture.

       /etc/dpatch.conf
              System-wide configuration file for dpatch, for setting global options permanently.

       ~/.dpatch.conf
              Per-user configuration file, for setting global options permanently.

AUTHORS

       dpatch was written by Joerg Jaspert, David B Harris, Gergely Nagy, Junichi Uekawa and others.

       This manual page was written by Gergely Nagy, and updated by Junichi Uekawa

SEE ALSO

       dpatch(7), dpatch.make(7), dpatch-edit-patch(1), dpatch-list-patch(1), dpatch-convert-diffgz(1)