Subject: Re: infrastructure change: PLIST files not rebuilt
To: None <tech-pkg@netbsd.org>
From: Klaus Heinz <k.heinz.jun.sieben@kh-22.de>
List: tech-pkg
Date: 06/04/2007 02:10:28
Mark Davies wrote:
> On Sunday 03 June 2007, Thomas Klausner wrote:
> > When one installed a package, changed the PLIST and (deleted it
> > and) installed it again, the new PLIST was used. This recently
> > stopped working, now one has to manually delete work*/.PLIST* to
> > get an updated PLIST. This is annyoing when updating packages.
> 
> 
> This might be part of the same infrastructure change, or just 

I am quite sure that the new dependency chain I introduced with
_PLIST_NOKEYWORDS

  .PHONY: plist
  plist: ${PLIST} ${_PLIST_NOKEYWORDS} 

  .if ${PLIST_TYPE} == "static" 
  ${PLIST}: ${PLIST_SRC}
  .endif
  ...
  ${_PLIST_NOKEYWORDS}: ${PLIST}

creates ${_PLIST_NOKEYWORDS} whenever you change ${PLIST_SRC} (the PLIST
file).

Some testing shows that the file $WRKSRC/.PLIST_deps is the culprit.
When I change the PLIST file, .PLIST and .PLIST_nokeywords get created
again but .PLIST_deps stays the same.


> separately broken, but installing kdenetwork3 on Solaris10 now fails 
> with:

> 
> /bin/sh: bad substitution
> *** Error code 1
> 
> Stop.
> bmake: stopped in /src/work/pkgsrc/net/kdenetwork3
> *** Error code 1

It looks like my change introduced those kinds of parameter expansion
(#, ##, %, %%) for the first time in *.mk files. On the other hand,
there are plenty of shell scripts in pkgsrc/mk using this syntax, so
I wonder how they worked before. Are those scripts _all_ called through
${SH} (/usr/xpg4/bin/sh on Solaris)?

  ./check/check-subr.sh
  ./extract/extract
  ./fetch/fetch
  ./flavor/pkg/metadata.mk
  ./buildlink3/show-buildlink3.sh
  ./buildlink3/transform-libtool
  ./buildlink3/libtool-fix-la
  ./bulk/sort-packages
  ./gnu-config/missing
  ./scripts/pkg_path
  ./scripts/shell-lib
  ./wrapper/transform-ccc-cc
  ./wrapper/arg-pp-darwin-gcc
  ./wrapper/arg-pp-main
  ./wrapper/arg-source
  ./wrapper/transform-mipspro-cc
  ./wrapper/cmd-sink-aix-cc
  ./wrapper/cmd-sink-aix-ld
  ./wrapper/cmd-sink-aix-xlc
  ./wrapper/cmd-sink-ld
  ./wrapper/cmd-sink-osf1-cc
  ./wrapper/cmd-sink-osf1-ld
  ./wrapper/cmd-sink-unixware-gcc
  ./wrapper/gen-reorder.sh
  ./wrapper/gen-transform.sh
  ./wrapper/transform-mipspro-ucode-cc
  ./wrapper/transform-sunpro-cc
  ./wrapper/cmd-sink-hpux-cc
  ./wrapper/cmd-sink-hpux-ld
  ./checksum/checksum
  ./plist/shlib-type
  ./plist/doc-compress
  ./plist/libtool-expand
  ./pkginstall/usergroup
  ./pkginstall/bsd.pkginstall.mk
  ./pkginstall/dirs
  ./pkginstall/files
  ./pkginstall/fonts
  ./pkginstall/header
  ./pkginstall/info-files
  ./pkginstall/perms
  ./pkginstall/shell
  ./pkginstall/usergroup-check
  ./pkginstall/usergroupfuncs
  ./pkginstall/usergroupfuncs.DragonFly
  ./pkginstall/usergroupfuncs.FreeBSD
  ./pkginstall/usergroupfuncs.Linux

I have changed the way the PROVIDES line is written in metadata.mk,
please try again.
We should really require bmake to use /bin/ksh or /usr/xpg4/bin/sh
as the default shell on Solaris. Or we introduce nbsh in the bootstrap
kit and use it on all platforms to get rid of all those differences.

ciao
     Klaus