dpatch-edit-patch - maintain dpatch patches for a Debian source package
dpatch-edit-patch [options] command dpatchname [basepatch]
This manual documents the dpatch-edit-patch command which maintains dpatch patches for a dpatch-using Debian source package. dpatch-edit-patch will copy the full tree to a temporary directory for working.
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.
dpatch-edit-patch takes two forms of arguments; options and commands.
Currently, the only command that exists is "patch", which allows you to
create/edit dpatches. When no command is given, "patch" is assumed.
COMMANDS:
patch This command requires one mandatory argument, and accepts one
optional argument under certain circumstances. The mandatory
argument is dpatchname. This refers to a dpatch, as it would be
listed in debian/patches/00list. It is not necessary for
dpatchname to exist prior to running dpatch-edit-patch patch
dpatchname.
When dpatchname exists, dpatch-edit-patch will set up a working
source tree, apply all dpatches listed in debian/patches/00list
up to and including dpatchname, and spawn an interactive shell
for the developer. The developer then edits files in this
working tree. When the developer is done, they exit the shell.
dpatch-edit-patch then updates dpatchname to reflect the changes
made. Should the developer wish to abort the process from the
interactive shell, they need only cause the shell to exit with
an exit value of 230. Typically, this is done by exiting the
shell with the command exit 230.
Would the developer wish to see the patch one's currently works
on without exiting the subshell, two environment variables are
exported into the subshell to help with this: DPEP_SHELL_REFDIR,
which is set to the reference directory's full name, and
DPEP_SHELL_WORKDIR, which is set to the subshell's working
directory.
These two can be used to - for example - generate a diff between
the reference version and the current tree:
diff -urNa $DPEP_SHELL_REFDIR $DPEP_SHELL_WORKDIR
When dpatchname does not exist, dpatch-edit-patch will assume that a
new dpatch should be created. As with the above scenario,
dpatch-edit-patch first creates a working source tree. If the optional
argument basepatch is supplied, all dpatches in debian/patches/00list
up to and including basepatch will be applied to the working tree. If
basepatch is not supplied, no dpatches are applied to the working tree.
When then developer exits the shell, dpatch-edit-patch will create
dpatchname. If debian/patches/00template does not exist, a hardcoded
dpatch header and shell snippet will be used. If it exists and is not
executable, it will be copied verbatim as the header and shell snippet.
Its first parameter is the base filename of the to-be-updated or
to-be-created dpatch (useful for adding titles to the dpatch header).
Its second parameter will be the description of the new patch.
OPTIONS
For the following options, command-line arguments take precedence over
environment variables, which take precedence over configuration
variables. Configuration variables are read from
debian/patches/00dpatch.conf and ~/.dpatch.conf.
-s, --sourcedir=value
Directory containing unpacked Debian source package.
Configuration variable conf_sourcedir (settable only in
~/.dpatch.conf), environment variable DPEP_SOURCEDIR. Defaults
to the current working directory.
-o, --outdir=value
Directory where the updated or newly-created dpatch will be
placed. Configuration variable conf_outdir (~/.dpatch.conf),
environment variable DPEP_OUTDIR. Defaults to ./debian/patches/
-c, --clean
Indicate to dpatch-edit-patch that the current work directory
can safely be cleaned. If not given, dpatch-edit-patch tries to
preserve partial or complete builds by first copying the current
work directory to a reference directory before invoking
debian/rules clean on the reference directory. If given, the
current directory is cleaned and then taken as a reference
directory. Use this option if your source package is pretty
large and no significant work is destroyed by cleaning.
Configuration variable conf_clean (~/.dpatch.conf), Environment
variable DPEP_CLEAN.
-b, --debianonly[=path]
Indicate to dpatch-edit-patch that the current work directory
only contains a debian subdirectory and that an upstream tarball
is to be unpacked in the reference directory before copying the
current work directory there. The optional argument is the path
to the upstream tarball - including the tarball name. If no
value is given, dpatch-edit-patch will use the hook script
pointed to by conf_getorigtargz (~/.dpatch.conf) or
DPEP_GETORIGTARGZ to obtain the upstream tarball. The hook
script should take one argument: the destination directory where
the fetched archive shall be put. Configuration variables:
conf_debianonly (debian/patches/00dpatch.conf) and
conf_origtargz (~/.dpatch.conf), Environment Variables
DPEP_DEBIANONLY and DPEP_ORIGTARGZ.
-P, --origtargzpath=path
When -b is in use, specify the path where upstream tarballs
should be looked for. path is a colon-separated list of
directories. Configuration variables: conf_origtargzpath
(~/.dpatch.conf), Environment Variables DPEP_ORIGTARGZPATH.
-r, --rootcmd=value
Command used to gain root privileges used to clean
DPEP_SOURCEDIR. Configuration variable conf_rootcmd,
environment variable DPEP_ROOTCMD. Defaults to fakeroot, if
installed. If none of the above are specified, and fakeroot is
not installed, dpatch-edit-patch will abort. The dpatch authors
strongly recommend the use of fakeroot for this purpose.
-d, --description=value
Description used for a newly-created patch. Configuration
variable conf_newdesc (~/.dpatch.conf), environment variable
DPEP_NEWDESC, defaults to No description.
-k, --keeptemp=value
Boolean value, either 0 or 1. Configuration variable
conf_keeptemp (~/.dpatch.conf), environment variable
DPEP_KEEPTEMP. When set to 1, temporary working tree is not
deleted when dpatch-edit-patch is done.
-t, --tmpdir=value
Temporary directory within which dpatch-edit-patch will create
the working source tree. Configuration variable conf_tmpdir
(~/.dpatch.conf), environment variable DPEP_TMPDIR. Should none
of the above be set, dpatch-edit-patch will first attempt to use
the environment variable TMPDIR, and will fall back to /tmp.
-p, --stampdir=value
The directory dpatch has used for creating patch stamps. Used
for checking if patch to be edited is already applied to the
working tree. Configuration variable conf_stampdir
(~/.dpatch.conf), environment variable DPEP_STAMPDIR. Should
none of the above be set, dpatch-edit-patch will fall back to
debian/patched
-e, --exclude=valuelist
Space-separated list of file- and directory names that
dpatch-edit-patch will exclude from being copied and diffed.
Configuration variable conf_exclude (~/.dpatch.conf),
environment variable DPEP_EXCLUDE. Defaults to "CVS .svn .git
.arch .hg _darcs .bzr", which might cause you trouble if you use
files named like that in your package.
-O, --diffopts=valuelist
Extra options to directly pass to diff as-is. Configuration
variable conf_diffopts (~/.dpatch.conf), environment variable
DPEP_DIFF_OPTIONS. It is empty by default.
-l, --shell=shell
Tell dpatch-edit-patch which shell to invoke. Configuration
variable conf_shell (~/.dpatch.conf), environment variable
DPEP_SHELL, defaulting to $SHELL and the user's default shell.
-n, --notimestamp
Tell dpatch-edit-patch to remove timestamps from the diffs it
generates. Can also be set in debian/patches/00options, with the
DPEP_OMIT_TIMESTAMPS variable.
-0, --add2list
add the new patch to 00list file.
-a, --applyall
apply all available patches.
Create a new patch to be applied after an existing patch.
To create a new patch, to be applied after an existing patch
90_ctrlkeyfix:
$ dpatch-edit-patch patch 95_newupstreamfix 90_ctrlkeyfix
dpatch-edit-patch: * debian/patches/95_newupstreamfix.dpatch does not exist, it will be created as a new dpatch.
dpatch-edit-patch: * Cleaning /home/david/temp/sopwith-1.6.0
...
dpatch-edit-patch: * Applying patches
dpatch-edit-patch: ** Applying patch 90_ctrlkeyfix ... applied cleanly.
dpatch-edit-patch: * Copying /home/david/temp/sopwith-1.6.0 to work directory.
...
$ editor files
$ exit 0
dpatch-edit-patch: * Creating new patch debian/patches/95_newupstreamfix.dpatch
dpatch-edit-patch: Warning: debian/patches/00template does not exist, using hardcoded default.
dpatch-edit-patch: debian/patches/95_newupstreamfix.dpatch created.
Create a new patch not depending on existing patches
To create a new patch, intended to be applied before any other patches
(or a new patch which doesn't require other patches to be applied
first):
$ dpatch-edit-patch 10_debianstrings
dpatch-edit-patch: * debian/patches/10_debianstrings.dpatch does not exist, it will be created as a new dpatch.
dpatch-edit-patch: * Cleaning /home/david/temp/sopwith-1.6.0
...
dpatch-edit-patch: Warning: * No base-patch supplied, not applying any patches.
dpatch-edit-patch: * Copying /home/david/temp/sopwith-1.6.0 to work directory.
...
$ editor files
$ exit 0
...
dpatch-edit-patch: * Creating new patch debian/patches/10_debianstrings.dpatch
dpatch-edit-patch: Warning: debian/patches/00template does not exist, using hardcoded default.
dpatch-edit-patch: debian/patches/10_debianstrings.dpatch created.
Edit an existing patch:
$ dpatch-edit-patch 10_debianstrings
dpatch-edit-patch: * debian/patches/10_debianstrings.dpatch exists, this patch will be updated.
dpatch-edit-patch: * Cleaning /home/david/temp/sopwith-1.6.0
...
dpatch-edit-patch: * Applying patches
dpatch-edit-patch: * Copying /home/david/temp/sopwith-1.6.0 to work directory.
dpatch-edit-patch: * Applying current 10_debianstrings for editing.
...
$ editor files
$ exit 0
dpatch-edit-patch: Updating patch debian/patches/10_debianstrings.dpatch
dpatch-edit-patch: @DPATCH@ tag found, preserving dpatch header.
dpatch-edit-patch: debian/patches/10_debianstrings.dpatch updated.
dpatch-edit-patch uses the DEBFULLNAME environment variable as the author's name. If it is unset, the author name will be left blank. dpatch-edit-patch determines the author's email address for new patches using the following algorithm: 1) Should the DEBEMAIL environment variable exist, it is always used. 2) If the EMAIL environment variable exists, it will be used when DEBEMAIL does not exist. 3) Should neither of the first two attempts succeed, the email will be constructed using the login name of the user running dpatch-edit-patch combined with the output of hostname -f. When dpatch-edit-patch sets up a reference or a working directory, it dereferences all symlinks in the source. That allows relative links to continue working, and allows changes only to a single file and not to the linked file and the link target. If you use dpatch-edit-patch on source trees that have symbolic links, you might end up with a patch that is unapplyable to the original tree.
debian/patches/00dpatch.conf, ~/.dpatch.conf.
dpatch(1), dpatch(7), dpatch.make(7), dpatch-list-patch(1), dpatch-convert-diffgz(1) Files in /usr/share/doc/dpatch/
This manual page was written by David B Harris <[email protected]> and modified in the course of development by Gergely Nagy <[email protected]>, Marc Haber <mh+[email protected]>, Stefano Zacchiroli <[email protected]>, and Junichi Uekawa <[email protected]>.
Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.
Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.
Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.
Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.
The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.
Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.
Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.
Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.