Debugging
To check out all the gotchas when building a package, here are
the steps that I do in order to get a package working. Please note
this is basically the same as what was explained in the previous
sections, only with some debugging aids.
Be sure to set PKG_DEVELOPER=yes in &mk.conf;.
Install pkgtools/url2pkg,
create a directory for a new package, change into it, then run
url2pkg:
&cprompt; mkdir /usr/pkgsrc/category/examplepkg
&cprompt; cd /usr/pkgsrc/category/examplepkg
&cprompt; url2pkg http://www.example.com/path/to/distfile.tar.gz
Edit the Makefile as requested.
Fill in the DESCR file
Run make configure
Add any dependencies glimpsed from documentation and the
configure step to the package's
Makefile.
Make the package compile, doing multiple rounds of
&cprompt; make
&cprompt; pkgvi ${WRKSRC}/some/file/that/does/not/compile
&cprompt; mkpatches
&cprompt; patchdiff
&cprompt; mv ${WRKDIR}/.newpatches/* patches
&cprompt; make mps
&cprompt; make clean
Doing this step as non-root user will ensure that no files
are modified that shouldn't be, especially during the build
phase. mkpatches,
patchdiff and pkgvi are
from the pkgtools/pkgdiff
package.
Look at the Makefile, fix if
necessary; see .
Generate a PLIST:
&rprompt; make install
&rprompt; make print-PLIST >PLIST
&rprompt; make deinstall
&rprompt; make install
&rprompt; make deinstall
You usually need to be root to do
this. Look if there are any files left:
&rprompt; make print-PLIST
If this reveals any files that are missing in
PLIST, add them.
Now that the PLIST is OK, install the
package again and make a binary package:
&rprompt; make reinstall
&rprompt; make package
Delete the installed package:
&rprompt; pkg_delete examplepkg
Repeat the above make print-PLIST
command, which shouldn't find anything now:
&rprompt; make print-PLIST
Reinstall the binary package:
&rprompt; pkg_add .../examplepkg.tgz
Play with it. Make sure everything works.
Run pkglint from pkgtools/pkglint, and fix the problems it
reports:
&rprompt; pkglint
Submit (or commit, if you have cvs access); see .