# pkgsrc targets
It was proposed that we document _all_ pkgsrc targets,
but this is unreasonable and useless.
Most targets are ancilliary ones;
they exist because that's how [[!template id=man name=make section=1]] works.
Only few of them are useful for regular work.
The following targets may be useful to invoke from keyboard:
* "depends" to build and install dependencies
* "fetch" to fetch distribution file(s)
* "checksum" to fetch and check distribution file(s)
* "extract" to look at unmodified source
* "patch" to look at initial source
* "configure" to stop after configure stage
* "all" or "build" to stop after build stage
* "stage-install" to install under stage directory
* "test" to run package's self-tests, if any exist and supported
* "package" to create binary package before installing it
* "replace" to change (upgrade, downgrade, or just replace) installed package in-place
* "deinstall" to deinstall previous package
* "package-install" to install package and build binary package
* "install" to install package
* "bin-install" to attempt to skip building from source and use pre-built binary package
Cleanup targets (in separate section because of importance):
* "clean-depends" to remove work directories for dependencies
* "clean" to remove work directory
* "distclean" to remove distribution file(s)
* "package-clean" to remove binary package
The following targets are useful in development and thus may be useful for an advanced user:
* "makesum" to fetch and generate checksum for distributed file(s)
* "makepatchsum" to (re)generate checksum for patches
* "makedistinfo" to (re)generate "distinfo" file (creating checksums for distributed file and patches)
* "mps" short for "makepatchsum"
* "mdi" short for "makedistinfo"
* "print-PLIST" to _attempt_ to generate correct packaging list
(NB! It helps, but it _doesn't_ eliminate manual work.)
For example, package updating looks like this:
[[!template id=programlisting text="""
$ su root -c "make depends clean-depends clean" # to catch new dependencies
$ rm -f distinfo && su root -c "make makesum clean" && make makepatchsum
$ make clean && make stage-install # build
# modify patches
$ make makepatchsum # and build again, or
$ make makepatchsum && make clean && make patch # until all patches apply, if they failed at first
$ make print-PLIST | diff -u PLIST -
# modify PLIST
$ rm $(make show-var VARNAME=WRKDIR)/.PLIST* # this deserves to be another target
$ make stage-install
# modify PLIST again or build again
$ make test # just to check for regressions
$ su root -c "make package deinstall bin-install" # or
$ su root -c "make package replace"
CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb