genpatch
—
generate patch quickly in standard FreeBSD ports format
This utility is always called by
portfix(1),
but quite often it is useful in its own right.
It creates patches using the standard FreeBSD ports format defined
by the "make makepatch" ports utility, but there are different
operational modes.
If genpatch
is called when the current
working directory is a subdirectory of WRKDIRPREFIX if defined or PORTSDIR
if not, then a patch will be saved in the current directory using the naming
standard used by "make makepatch". Note that the utility assumes
that it has been executed in the WRKSRC directory, the standard location for
applying ports patches.
If genpatch
is executed outside of
WRKDIRPREFIX (or PORTSDIR), then a patch will not be created. The contents
of the patch will be send to stdout, so the user will have to direct it to a
file manually as desired.
If only one argument is given, genpatch
will search for a file named "<newfile>.intermediate" and if
found, it will generated diff output between it and [newfile]. If that file
doesn't exist, it will search for "<newfile>.orig" and
attempt to create diff output between it and [newfile].
genpatch
will abort if no arguments or more than 2
arguments are given. If only one argument ( [newfile] ) is given, then a
regular file called "<newfile>.orig" or
"<newfile>.intermediate" must exist otherwise
genpatch
will abort. If two arguments are given, both
must be existing regular files.
WORKTREE
- Overrides hardcoded WRKDIRPREFIX (or PORTSDIR). This is useful for ports
outside of the tree or when
genpatch
was installed
via binary packages and WRKDIRPREFIX is defined (or PORTSDIR is
non-standard)
- FreeBSD does not set WRKDIRPREFIX by default
- The default PORTSDIR for FreeBSD is /usr/ports so
on standard FreeBSD systems
genpatch
will generate
a patch file in the current directory if executed on any subdirectory of
/usr/ports.
- Dragonfly sets WRKDIRPREFIX to /usr/obj/dports by
default, so on standard systems patch files are generated automatically if
genpatch
is executed from a subdirectory of
/usr/obj/dports.
- The root directory used for this calculation is permanently set when
genpatch
is built, but it can be overridden with
the WORKTREE environment variable.