Brad Walker writes:

> Adding --localstatedir=/var places the game score files
> under /var/games/emacs, but then update-plist strips them.

I think that you ought to use @sample in the PLIST file to create the
directory and the files in /var/games.  For example:

@mode g+w
@group games
@sample /var/games/emacs/
@mode
@group
share/examples/emacs/snake-scores
@mode g+w
@group games
@sample /var/games/emacs/snake-scores
@mode
@group
share/examples/emacs/tetris-scores
@mode g+w
@group games
@sample /var/games/emacs/tetris-scores
@mode
@group

Put a post-install target into the Makefile to copy the high score files
to the example directory:

post-install:
        ${INSTALL_DATA_DIR} ${PREFIX}/share/examples/emacs
        ${INSTALL_DATA} ${WRKINST}/var/games/emacs/snake-scores 
${PREFIX}/share/examples/emacs
        ${INSTALL_DATA} ${WRKINST}/var/games/emacs/tetris-scores 
${PREFIX}/share/examples/emacs

Finally, change the group of the update-game-score binary to the games
group and set the group s-bit so that Emacs can update the system-wide
high score files:

@mode g+s
@group games
libexec/emacs/${VERSION}/${GCCARCH}/update-game-score
@mode
@group

>> - there is a problem with chown commands failing during fake install.
>
> The Makefile uses "find $${dest} -exec chown $${LOGNAME:-$$USERNAME} {}
> ';' ;\" in several places, causing the chown errors since ports doesn't
> set LOGNAME or USERNAME. Adding 'LOGNAME="${SHAREOWN}"' to MAKE_ENV
> quieted the chown errors.

Emacs 23, i.e. the development version, uses $USER and `id -un 2>
/dev/null` in addition to $LOGNAME and $USERNAME:

## http://lists.gnu.org/archive/html/emacs-devel/2007-10/msg01672.html
## Needs to be the user running install, so configure can't set it.
set_installuser=for installuser in $${LOGNAME} $${USERNAME} $${USER} \
          `id -un 2> /dev/null`; do \
          [ -n "$${installuser}" ] && break ; \
        done

Reply via email to