Following suggestions from Lucas and John, I made progress: package creation now succeeds. Thanks for the hints. Responses and some further questions are below:
> On Sep 29, 2015, at 8:14 AM, Lucas Holt <[email protected]> wrote: > > You should try adding ${DESTDIR} in front of prefix. The ports system expects > the make file to support a staging directory. I'd suggest reading up on > staging in FreeBSD and dragonfly. Yes, this seemed to break the logjam. Now "make package" results in a .txz file in the work/pkg directory. I tried looking at the source Makefile of another port and it didn't use DESTDIR, but I'm assuming that your suggestion is standard practice. > On Sep 29, 2015, at 4:31 AM, John Marino <[email protected]> wrote: > It appears you are missing the pkg-plist file (or alternatively the > definition for PLIST_FILES in Makefile for very short manifest). > > A quick way to generate a one is "make makeplist" after "make stage". > You'll have to edit it, at least removing first line though. The port does have a pkg-plist. At the moment it's a one-liner that specifies where the binary goes. Out of curiosity, I removed the existing pig-list file and ran "make makeplist". Doing that prints the single line I'd expect to the screen. Does it also create a file with this output somewhere? > > Then "make clean; make stage-qa" to check everything. I tried this: xo% sudo make clean ; sudo make stage-qa ===> Cleaning for rdnssd-1.0.0 ====> Running Q/A tests (stage-qa) cd: /usr/obj/dports/dns/rdnssd/work/stage: No such file or directory find: /usr/obj/dports/dns/rdnssd/work/stage: No such file or directory find: /usr/obj/dports/dns/rdnssd/work/.PLIST.mktmp: No such file or directory find: /usr/obj/dports/dns/rdnssd/work/stage: No such file or directory find: /usr/obj/dports/dns/rdnssd/work/stage: No such file or directory find: /usr/obj/dports/dns/rdnssd/work/stage: No such file or directory find: /usr/obj/dports/dns/rdnssd/work/stage: No such file or directory Doing a "make stage" after "make clean" allowed the "make stage-qa" to complete successfully. It didn't find any problems. But is that the correct sequence of steps? Also, a side question. I'm doing everything with sudo because all these directories are owned by root/wheel and have 0755 permissions. What do most people do when working on ports? Use sudo, or chmod/chown the directory trees so that the non-root accounts can write files? > > In general I limit "dports-only" packages to those that clearly cannot > or will not be accepted in freebsd ports. Generally what is useful for > use is also useful to dragonfly and should be formally maintained. My intent is to create what I think you're describing: an entity that exists in the DPorts collection and can be installed with "pkg install rdnssd". I wasn't aware of "dports-only" packages. Am I going about creating an installable package in the correct way? Chuck
