# 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 * **show-depends** print dependencies for building * **show-options** print available options from options.mk 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 make install-clean # to remove cached PLISTs and "installation done" marker 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" """]]