Frequently Asked Questions
This section contains the answers to questions that may
arise when you are writing a package. If you don't find your
question answered here, first have a look in the other chapters,
and if you still don't have the answer, ask on the
pkgsrc-users mailing list.
What is the difference between
MAKEFLAGS, .MAKEFLAGS and
MAKE_FLAGS?
MAKEFLAGS are the flags passed
to the pkgsrc-internal invocations of &man.make.1;, while
MAKE_FLAGS are the flags that are passed to
the MAKE_PROGRAM when building the
package. [FIXME: What is .MAKEFLAGS for?]
What is the difference between
MAKE, GMAKE and
MAKE_PROGRAM?
MAKE is the path to the
&man.make.1; program that is used in the pkgsrc
infrastructure. GMAKE is the path to GNU
Make, but you need to say USE_TOOLS+=gmake to
use that. MAKE_PROGRAM is the path to the
Make program that is used for building the
package.
What is the difference between
CC, PKG_CC and
PKGSRC_COMPILER?
CC is the path to the real C
compiler, which can be configured by the pkgsrc user.
PKG_CC is the path to the compiler wrapper.
PKGSRC_COMPILER is not a
path to a compiler, but the type of compiler that should be
used. See mk/compiler.mk for more
information about the latter variable.
What is the difference between
BUILDLINK_LDFLAGS,
BUILDLINK_LDADD and
BUILDLINK_LIBS?
[FIXME]
Why does make show-var
VARNAME=BUILDLINK_PREFIX.foo
say it's empty?
For optimization reasons, some variables are only
available in the wrapper
phase and later. To
simulate
the wrapper phase, append
PKG_PHASE=wrapper to the above
command.
What does
${MASTER_SITE_SOURCEFORGE:=package/} mean? I
don't understand the := inside
it.
The := is not really an
assignment operator, like you might expect at first sight.
Instead, it is a degenerate form of
${LIST:old_string=new_string},
which is documented in the &man.make.1; man page and which you
may have seen as in ${SRCS:.c=.o}. In the
case of MASTER_SITE_*,
old_string is the empty string and
new_string is
package/. That's where the
: and the = fall
together.
Which mailing lists are there for package
developers?
tech-pkg
This is a list for technical discussions related
to pkgsrc development, e.g. soliciting feedback for changes to
pkgsrc infrastructure, proposed new features, questions related
to porting pkgsrc to a new platform, advice for maintaining a
package, patches that affect many packages, help requests moved
from pkgsrc-users when an infrastructure bug is found,
etc.
pkgsrc-bugs
All bug reports in category "pkg" sent with
&man.send-pr.1; appear here. Please do not report your bugs here
directly; use one of the other mailing
lists.
Where is the pkgsrc
documentation?
There are many places where you can find
documentation about pkgsrc:
The pkgsrc guide (this document) is a collection
of chapters that explain large parts of pkgsrc, but some
chapters tend to be outdated. Which ones they are is hard to
say.
On the mailing list archives (see ), you can find discussions
about certain features, announcements of new parts of the pkgsrc
infrastructure and sometimes even announcements that a certain
feature has been marked as obsolete. The benefit here is that
each message has a date appended to it.
Many of the files in the
mk/ directory start with a comment that
describes the purpose of the file and how it can be used by the
pkgsrc user and package authors. An easy way to find this
documentation is to run bmake
help.
The CVS log messages are a rich source of
information, but they tend to be highly abbreviated, especially
for actions that occur often. Some contain a detailed
description of what has changed, but they are geared towards the
other pkgsrc developers, not towards an average pkgsrc user.
They also only document changes, so if you
don't know what has been before, these messages may not be worth
too much to you.
Some parts of pkgsrc are only implicitly
documented
, that is the documentation exists only in the
mind of the developer who wrote the code. To get this
information, use the cvs annotate command
to see who has written it and ask on the
tech-pkg mailing list, so that others can
find your questions later (see above). To be sure that the
developer in charge reads the mail, you may CC him or
her.
I have a little time to kill. What shall I
do?
This is not really an FAQ yet, but here's the answer
anyway.
Run pkg_chk -N (from the
pkgtools/pkg_chk package). It
will tell you about newer versions of installed packages that are
available, but not yet updated in pkgsrc.
Browse pkgsrc/doc/TODO
— it contains a list of suggested new packages and a list of
cleanups and enhancements for pkgsrc that would be nice to
have.
Review packages for which review was requested on
the pkgsrc-wip review
mailing list.