package creation failure

Charles Musser cmusser at sonic.net
Tue Sep 29 10:31:37 PDT 2015


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 <lucasholt at mac.com> 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 <mfl-commissioner at marino.st> 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


More information about the Users mailing list