Subject: Re: TOOLS_PREFIX and tools framework and missing tool
To: Jeremy C. Reed <reed@reedmedia.net>
From: Johnny C. Lam <jlam@pkgsrc.org>
List: tech-pkg
Date: 12/28/2005 09:00:53
Jeremy C. Reed wrote:
> Two questions:
> 
> 1) I was looking at pkgsrc/mk/tools/replace.mk (and in revision 1.133) 
> and the line for x11-clients has "imake"
> 
> .      if defined(X11_TYPE) && !empty(X11_TYPE:MXFree86)
> TOOLS_DEPENDS.${_t_}?=  XFree86-clients>=4.4.0:../../x11/XFree86-clients
> TOOLS_FIND_PREFIX+=     TOOLS_PREFIX.${_t_}=imake
> TOOLS_PATH.${_t_}=      ${TOOLS_PREFIX.${_t_}}/${X11ROOT_PREFIX}/bin/${_t_}
> 
> (The following lines have xorg-clients.)
> 
> May I change the line above to:
> 
> TOOLS_FIND_PREFIX+=    TOOLS_PREFIX.${_t_}=XFree86-clients
> 
> I am not sure if this is a copy-and-paste error or if it is meant to be 
> "imake".

Please commit your suggested change.  We will probably need to request a 
pullup.

> 2) Also what should happen if a tool is missing? I added a bogus entry 
> to end of _TOOLS.x11-clients and then added it to USE_TOOLS in a 
> package. Nothing failed, although TOOLS_PATH.jcrtest was properly defined.
> 
> Should the tools framework check if TOOLS_PATH.jcrtest exists?

No, I don't believe testing for existence is necessarily desired.  There 
are some values that you want to have set to the correct value even 
before the tools themselves are installed by pkgsrc (if they are 
installed via pkgsrc).  We could restrict the checks to a particular 
phase of the build to avoid running stat() for each tool for each 
invocation of make, but I haven't found a pressing need for this extra 
code yet.

> I am looking at this because I am about to commit the one addition of 
> "makepsres" to that _TOOLS.x11-clients. It may be useful for the package 
> build to fail when the TOOLS_PATH.makepsres is missing (when 
> USE_TOOLS+=makepsres and X11_TYPE is native) instead of failing later 
> during or after build.

Should the package fail if "makepsres" isn't present?  If so, then that 
is some secondary condition outside of the tools framework that you will 
have to impose on your package.  The tools framework gives a way to 
express which package can provide a tool that may be missing from the 
base system.  If X11_TYPE is "native", is there a way to get a makepsres 
tool from pkgsrc?  If not, then the tools framework as it's currently 
designed it isn't applicable here.  Can you be more specific about how 
your package uses makepsres?

	Cheers,

	-- Johnny Lam <jlam@pkgsrc.org>