Subject: Re: do we need to check for text files in subst.mk?
To: Joerg Sonnenberger <joerg@britannica.bec.de>
From: Roland Illig <rillig@NetBSD.org>
List: pkgsrc-users
Date: 10/04/2007 21:43:01
Joerg Sonnenberger wrote:
> On Thu, Oct 04, 2007 at 09:02:59PM +0200, Klaus Heinz wrote:
> 
>>The check I am talking about is _SUBST_IS_TEXT_FILE in mk/subst.mk.
>>Why do we need to check for the "text" property of a file if we
>>explicitly specify the files where substitutions ought to be done? The
>>simple solution: do not list files in SUBST_FILES.* which are not text
>>files.
> 
> 
> Because the use generic patterns in a number of places. Not all SUBST
> users specify explicit file lists.

./wrapper/bsd.wrapper.mk:SUBST_FILES.unwrap=    ${_UNWRAP_FILES}

The worst instance is the above. _UNWRAP_FILES includes ./*-config, 
which in the case of devel/pkg-config results in checking a binary file.

I have changed the _SUBST_IS_TEXT macro in my local copy of pkgsrc to 
just check for embedded '\0' bytes, and it works great:

_SUBST_IS_TEXT_FILE?= \
         { nchars=`wc -c < "$$file"`; \
           notnull=`tr -d '\\0' < "$$file" | wc -c`; \
           [ "$$nchars" = "$$notnull" ] || ${FALSE} ; \
         }

Roland