questions about Makefile

Mathieu Arnold mat at FreeBSD.org
Sun Aug 14 14:37:12 UTC 2016



+--On 13 août 2016 10:34:27 +0200 Martin Waschbüsch
<martin at waschbuesch.de> wrote:
| Hi all,
| 
| I am in the process of creating a port for a module / plugin for
| net-mgmt/zabbix-agent.
| 
| I tried to follow the Porter's Handbook, but still have three items I am
| uncertain about:
| 
| 1) The plugin (obviously) relies on the zabbix-agent sources.
| I added
| 
| BUILD_DEPENDS=	${NONEXISTENT}:net-mgmt/zabbix3-agent:extract
| 
| to make sure that the sources will always be extracted.

You should use :patch, so that the sources are properly patched for FreeBSD.

| Now, how do I
| properly reference these sources in my port? What I have right now (just
| to make it compile) is this:
| 
| CONFIGURE_ARGS=
| 	--with-zabbix=${PORTSDIR}/net-mgmt/zabbix3-agent/work/zabbix-3.0.2
| 
| Obviously, I'd want to somehow get that path without having to specify
| the version number as I want to build against the version currently
| available in ports. How do I do that? Is there any reference to something
| like this in the handbook?

That doesn't work because:

1) the base directory of a workdir is changeable with WRKDIRPREFIX
2) If zabbix gets updated, it breaks.

you have to use something like:

ZABBIX_WRKSRC!=  cd ${.CURDIR:H:H}/net-mgmt/zabbix3-agent && make -V WRKSRC

| 2) Imagine this module could be compiled against both, zabbix2-agent and
| zabbix3-agent. I guess the cleanest way to support this would be having
| one port per zabbix-version? If that is the case, should the whole thing
| perhaps be a slave port belonging to zabbix{2,3}-agent?
| 
| 3) I found that I cannot (as a normal user) successfully run 'make
| package'. I get an error like this:
| mkdir: /usr/ports/net-mgmt/foobar/work: Permission denied
| Before I add 'NEED_ROOT=yes' to the Makefile, are there requirements for
| a normal user to build ports? e.g. does said user have to be in a certain
| group, etc.? I mean, every port will have to create a workdir, and I
| cannot imagine every port as having 'NEED_ROOT=yes' in their Makefile...
| ;-)

Well, your user needs to be able to write, so, either checkout a ports tree
in your home directory, and set PORTSDIR accordingly, or chown -R
/usr/ports to your user, or set WRKDIRPREFIX to somewhere your user can
write, for example /tmp.

-- 
Mathieu Arnold
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 949 bytes
Desc: not available
URL: <http://lists.freebsd.org/pipermail/freebsd-ports/attachments/20160814/81d87e9e/attachment.sig>


More information about the freebsd-ports mailing list