diff options
author | knu <knu@FreeBSD.org> | 2001-09-02 02:57:08 +0800 |
---|---|---|
committer | knu <knu@FreeBSD.org> | 2001-09-02 02:57:08 +0800 |
commit | 10038e9948bef09d352da5b9e837459ae7ef18d2 (patch) | |
tree | ff33e9be4d949d50b7838491c62a3db2fb32d483 /devel/p4d | |
parent | 64e5821660f11b28a765315d5715d896cb379a48 (diff) | |
download | freebsd-ports-gnome-10038e9948bef09d352da5b9e837459ae7ef18d2.tar.gz freebsd-ports-gnome-10038e9948bef09d352da5b9e837459ae7ef18d2.tar.zst freebsd-ports-gnome-10038e9948bef09d352da5b9e837459ae7ef18d2.zip |
- Update to version 01.1
- Support the alpha platform (although it is still at version 99.1)
- Install p4ftpd
- Create a non-privileged user and run p4d as the user
- Dig directories and make the port plug-and-play
- Change the configuration file's name to perforce.conf
- Do not unconditionally remove perforce.conf on deinstall
- Make almost all parameters (including directory layouts and
user/group names) configurable via make variables
- Make the startup script support "restart"
- Take over the maintainership
Approved by: Samuel Tardieu <sam@inf.enst.fr> (ex. MAINTAINER)
Diffstat (limited to 'devel/p4d')
-rw-r--r-- | devel/p4d/Makefile | 92 | ||||
-rw-r--r-- | devel/p4d/distinfo | 15 | ||||
-rw-r--r-- | devel/p4d/files/perforce | 18 | ||||
-rw-r--r-- | devel/p4d/files/perforce.conf.in | 40 | ||||
-rw-r--r-- | devel/p4d/files/perforce.sh.in | 40 | ||||
-rw-r--r-- | devel/p4d/pkg-descr | 7 | ||||
-rw-r--r-- | devel/p4d/pkg-install | 52 | ||||
-rw-r--r-- | devel/p4d/pkg-plist | 7 |
8 files changed, 215 insertions, 56 deletions
diff --git a/devel/p4d/Makefile b/devel/p4d/Makefile index f0d700965267..799ca0a5f2b5 100644 --- a/devel/p4d/Makefile +++ b/devel/p4d/Makefile @@ -6,39 +6,99 @@ # PORTNAME= perforce -PORTVERSION= 00.2 +PORTVERSION= ${VERSION} PORTEPOCH= 1 CATEGORIES= devel -MASTER_SITES= ftp://ftp.perforce.com/pub/perforce/r${PORTVERSION}/bin.freebsd/ \ - http://www.dsmit.com/p4/ \ +MASTER_SITES= ftp://ftp.perforce.com/pub/perforce/r${PORTVERSION}/bin.${PLATFORM}/ \ ftp://ftp.perforce.com/pub/perforce/r${PORTVERSION}/doc/man/ EXTRACT_SUFX= -DISTFILES= p4 p4d p4web p4.1 p4d.1 -DIST_SUBDIR= perforce +DISTFILES= ${BIN_FILES} ${SBIN_FILES} ${MAN1} +DIST_SUBDIR= perforce/${VERSION}/${ARCH} +EXTRACT_ONLY= # none -MAINTAINER= sam@inf.enst.fr +MAINTAINER= knu@FreeBSD.org NO_PACKAGE= Restricted distribution NO_CDROM= Restricted distribution MAN1= p4.1 p4d.1 -do-extract: - @${MKDIR} ${WRKSRC} +NO_WRKSUBDIR= yes + +.include <bsd.port.pre.mk> + +# These variables are all configurable. +PERFORCE_USER?= p4admin +PERFORCE_UID?= 94 +PERFORCE_GROUP?= p4admin +PERFORCE_GID?= 94 +PERFORCE_HOME?= ${LOCALBASE}/perforce +PERFORCE_ROOT?= ${PERFORCE_HOME}/root +PERFORCE_LOGS?= ${PERFORCE_HOME}/logs +PERFORCE_PORT?= 1666 + +.if ${ARCH} == i386 +VERSION= 01.1 +PLATFORM= freebsd +BIN_FILES= p4 p4web +SBIN_FILES= p4d p4ftpd +.elif ${ARCH} == alpha +VERSION= 99.1 +PLATFORM= freebsdaxp +BIN_FILES= p4 +SBIN_FILES= p4d +.else +.error "Unsupported platform, sorry." +.endif do-build: + ${SED} -e "s,@PERFORCE_ROOT@,${PERFORCE_ROOT},g" \ + -e "s,@PERFORCE_LOGS@,${PERFORCE_LOGS},g" \ + -e "s,@PERFORCE_USER@,${PERFORCE_USER},g" \ + -e "s,@PERFORCE_PORT@,${PERFORCE_PORT},g" \ + < ${FILESDIR}/perforce.conf.in > ${WRKSRC}/perforce.conf ${SED} -e "s,@PREFIX@,${PREFIX},g" \ < ${FILESDIR}/perforce.sh.in > ${WRKSRC}/perforce.sh +pre-install: + ${SETENV} PKG_PREFIX=${PREFIX} \ + PERFORCE_USER=${PERFORCE_USER} \ + PERFORCE_UID=${PERFORCE_UID} \ + PERFORCE_GROUP=${PERFORCE_GROUP} \ + PERFORCE_GID=${PERFORCE_GID} \ + PERFORCE_HOME=${PERFORCE_HOME} \ + PERFORCE_ROOT=${PERFORCE_ROOT} \ + PERFORCE_LOGS=${PERFORCE_LOGS} \ + ${SH} ${PKGDIR}/pkg-install ${PORTNAME} PRE-INSTALL + do-install: - ${INSTALL_PROGRAM} ${DISTDIR}/${DIST_SUBDIR}/p4 ${PREFIX}/bin/ - ${INSTALL_PROGRAM} ${DISTDIR}/${DIST_SUBDIR}/p4web ${PREFIX}/bin/ - ${INSTALL_PROGRAM} ${DISTDIR}/${DIST_SUBDIR}/p4d ${PREFIX}/sbin/ - if [ ! -f ${PREFIX}/etc/perforce ]; then \ - ${INSTALL_DATA} ${FILESDIR}/perforce ${PREFIX}/etc/; \ +.for f in ${BIN_FILES} + ${INSTALL_PROGRAM} ${_DISTDIR}/${f} ${PREFIX}/bin/ +.endfor +.for f in ${SBIN_FILES} + ${INSTALL_PROGRAM} ${_DISTDIR}/${f} ${PREFIX}/sbin/ +.endfor + ${INSTALL_DATA} ${WRKSRC}/perforce.conf ${PREFIX}/etc/perforce.conf.default; \ + if [ ! -f ${PREFIX}/etc/perforce.conf ]; then \ + ${CP} -p ${PREFIX}/etc/perforce.conf.default ${PREFIX}/etc/perforce.conf; \ fi ${INSTALL_SCRIPT} ${WRKSRC}/perforce.sh ${PREFIX}/etc/rc.d/ -.for PERFMAN in p4 p4d - ${INSTALL_MAN} ${DISTDIR}/${DIST_SUBDIR}/${PERFMAN}.1 ${PREFIX}/man/man1 +.for f in ${MAN1} + ${INSTALL_MAN} ${_DISTDIR}/${f} ${PREFIX}/man/man1/ +.endfor +.for f in ${BIN_FILES} + ${INSTALL_PROGRAM} ${_DISTDIR}/${f} ${PREFIX}/bin/ +.endfor +.for f in ${SBIN_FILES} + ${INSTALL_PROGRAM} ${_DISTDIR}/${f} ${PREFIX}/sbin/ +.endfor + +post-install: +.for f in ${BIN_FILES} + ${ECHO} bin/${f} >> ${TMPPLIST} +.endfor +.for f in ${SBIN_FILES} + ${ECHO} sbin/${f} >> ${TMPPLIST} .endfor + ${ECHO} "@unexec /bin/rmdir ${PERFORCE_ROOT} ${PERFORCE_LOGS} ${PERFORCE_HOME} 2>/dev/null || true" >> ${TMPPLIST} -.include <bsd.port.mk> +.include <bsd.port.post.mk> diff --git a/devel/p4d/distinfo b/devel/p4d/distinfo index b1291af99003..c0ec95e5e3fe 100644 --- a/devel/p4d/distinfo +++ b/devel/p4d/distinfo @@ -1,5 +1,10 @@ -MD5 (perforce/p4) = cd395c485cd7e0a2f80d6b972374dca6 -MD5 (perforce/p4d) = 8556db22a77aa1b67542ab4712292731 -MD5 (perforce/p4web) = 1a64aaa96d9088f4375cdc4a1ec2a2bb -MD5 (perforce/p4.1) = 4019bba1166429d5a7111319afa09e48 -MD5 (perforce/p4d.1) = 29b1bd9838acb517f00becf1b8273592 +MD5 (perforce/01.1/i386/p4) = 128d067c5feec61d7e6df74d871e3ed0 +MD5 (perforce/01.1/i386/p4d) = bfbb3ed930fc66f7ce7b1da4cbfe6b61 +MD5 (perforce/01.1/i386/p4ftpd) = 2d02f69be2f636c52dbdae9e1dbfe9b8 +MD5 (perforce/01.1/i386/p4web) = ee5843ee0539700e8eb0e65eff5f4d74 +MD5 (perforce/01.1/i386/p4.1) = 7eed553dc7b484ec3fd7a81173e531b7 +MD5 (perforce/01.1/i386/p4d.1) = 50b3a5705319fa8389a8f83123f80e8f +MD5 (perforce/99.1/alpha/p4) = 7c1300a82ab03b7ede46cf8a02c48fd9 +MD5 (perforce/99.1/alpha/p4d) = 8f34c41c18185011ed848aaf450cffa5 +MD5 (perforce/99.1/alpha/p4.1) = 4a9d035eb5ef96342c2f701a02da40f9 +MD5 (perforce/99.1/alpha/p4d.1) = a08eb04e9668ba4d0abf47f3b12c56f7 diff --git a/devel/p4d/files/perforce b/devel/p4d/files/perforce deleted file mode 100644 index e8572a008b80..000000000000 --- a/devel/p4d/files/perforce +++ /dev/null @@ -1,18 +0,0 @@ -# -# Perforce FreeBSD configuration file -# - -# -# Perforce ROOT -# -PERFORCE_ROOT="/usr/p4root" - -# -# Perforce options (see man p4d) -# -PERFORCE_OPTIONS="-d -v server=1 -L /var/log/perforce" - -# -# Uncomment this line to have the server started automatically -# -#PERFORCE_START=yes diff --git a/devel/p4d/files/perforce.conf.in b/devel/p4d/files/perforce.conf.in new file mode 100644 index 000000000000..a98aa38b842b --- /dev/null +++ b/devel/p4d/files/perforce.conf.in @@ -0,0 +1,40 @@ +# +# Perforce FreeBSD configuration file +# +# +# $FreeBSD$ + +# +# Perforce ROOT +# +PERFORCE_ROOT="@PERFORCE_ROOT@" + +# +# Perforce user (it is recommended to run p4d as a non-root user) +# +PERFORCE_USER="@PERFORCE_USER@" + +# +# p4d port (default: 1666) +# +PERFORCE_PORT="@PERFORCE_PORT@" + +# +# p4d options (see man p4d) +# +PERFORCE_OPTIONS="-d -p $PERFORCE_PORT -v server=1 -L @PERFORCE_LOGS@/p4d.log" + +# +# Uncomment this line to have the server started automatically +# +#PERFORCE_START=yes + +# +# p4ftpd options (see p4ftpd -h) +# +PERFORCE_FTPD_OPTIONS="-d -p $PERFORCE_PORT -v server=1 -L @PERFORCE_LOGS@/p4ftpd.log" + +# +# Uncomment this line to have the server started automatically +# +#PERFORCE_FTPD_START=yes diff --git a/devel/p4d/files/perforce.sh.in b/devel/p4d/files/perforce.sh.in index 33398a7a8691..38cdb146e00e 100644 --- a/devel/p4d/files/perforce.sh.in +++ b/devel/p4d/files/perforce.sh.in @@ -1,14 +1,38 @@ #!/bin/sh +# +# $FreeBSD$ + +p4d=@PREFIX@/sbin/p4d +p4ftpd=@PREFIX@/sbin/p4ftpd + case $1 in - start) - [ -f @PREFIX@/etc/perforce ] && . @PREFIX@/etc/perforce - if [ x$PERFORCE_START = xyes ]; then - echo -n ' perforce' - p4d -r $PERFORCE_ROOT $PERFORCE_OPTIONS +start) + [ -f @PREFIX@/etc/perforce.conf ] && . @PREFIX@/etc/perforce.conf + if [ -x $p4d -a x$PERFORCE_START = xyes ]; then + echo -n ' p4d' + su -fm $PERFORCE_USER -c "$p4d -r $PERFORCE_ROOT $PERFORCE_OPTIONS" fi + if [ -x $p4ftpd -a x$PERFORCE_FTPD_START = xyes ]; then + echo -n ' p4ftpd' + $p4ftpd $PERFORCE_FTPD_OPTIONS + fi + ;; +stop) + [ -f @PREFIX@/etc/perforce.conf ] && . @PREFIX@/etc/perforce.conf + if [ -x $p4ftpd ]; then + killall -u 0 p4ftpd >/dev/null 2>&1 && echo -n ' p4ftpd' + fi + if [ -x $p4d ]; then + killall -u $PERFORCE_USER p4d >/dev/null 2>&1 && echo -n ' p4d' + fi + ;; +restart) + $0 stop + sleep 1 + $0 start ;; - stop) - killall p4d && echo -n ' perforce' +*) + echo "usage: $0 {start|stop|restart}" + exit 64 ;; - *) ;; esac diff --git a/devel/p4d/pkg-descr b/devel/p4d/pkg-descr index f58442e3db0a..e6d35851b44b 100644 --- a/devel/p4d/pkg-descr +++ b/devel/p4d/pkg-descr @@ -1,7 +1,4 @@ -Perforce is a commercial revision control system that can be used gratis -for developing free software (see WWW page for details). +Perforce is a commercial revision control system that can be used +gratis for developing free software. (see the WWW page for details). WWW: http://www.perforce.com/ - - -- Samuel Tardieu - sam@inf.enst.fr diff --git a/devel/p4d/pkg-install b/devel/p4d/pkg-install new file mode 100644 index 000000000000..b1c9c5d72e22 --- /dev/null +++ b/devel/p4d/pkg-install @@ -0,0 +1,52 @@ +#! /bin/sh +# +# $FreeBSD$ + +PATH=/bin:/usr/sbin + +PERFORCE_USER=${PERFORCE_USER:-p4admin} +PERFORCE_UID=${PERFORCE_UID:-94} +PERFORCE_GROUP=${PERFORCE_GROUP:-p4admin} +PERFORCE_GID=${PERFORCE_GID:-94} +PERFORCE_HOME=${PERFORCE_HOME:-$PKG_PREFIX/perforce} +PERFORCE_LOGDIR=${PERFORCE_LOGDIR:-$PERFORCE_HOME/log} +PERFORCE_ROOT=${PERFORCE_ROOT:-$PERFORCE_HOME/root} + +case $2 in +PRE-INSTALL) + USER=${PERFORCE_USER} + GROUP=${PERFORCE_GROUP} + UID=${PERFORCE_UID} + GID=${PERFORCE_GID} + + if pw group show "${GROUP}" 2>/dev/null; then + echo "You already have a group \"${GROUP}\", so I will use it." + else + if pw groupadd ${GROUP} -g ${GID}; then + echo "Added group \"${GROUP}\"." + else + echo "Adding group \"${GROUP}\" failed..." + exit 1 + fi + fi + + if pw user show "${USER}" 2>/dev/null; then + echo "You already have a user \"${USER}\", so I will use it." + else + if pw useradd ${USER} -u ${UID} -g ${GROUP} -h - \ + -d ${PERFORCE_HOME} -c "Perforce admin" -s /sbin/nologin + then + echo "Added user \"${USER}\"." + else + echo "Adding user \"${USER}\" failed..." + exit 1 + fi + fi + + if [ ! -d $PERFORCE_HOME ] ; then +echo hey + mkdir -p $PERFORCE_HOME $PERFORCE_LOGS $PERFORCE_ROOT + chown -R $USER:$GROUP $PERFORCE_HOME + fi + ;; +esac diff --git a/devel/p4d/pkg-plist b/devel/p4d/pkg-plist index f5fca512c3c6..31e0893152cc 100644 --- a/devel/p4d/pkg-plist +++ b/devel/p4d/pkg-plist @@ -1,5 +1,4 @@ -bin/p4 -bin/p4web -sbin/p4d -etc/perforce +@unexec if cmp -s %D/etc/perforce.conf %D/etc/perforce.conf.default; then rm -f %D/etc/perforce.conf; fi +etc/perforce.conf.default +@exec [ ! -f %B/perforce.conf ] && cp -p %B/%f %B/perforce.conf || true etc/rc.d/perforce.sh |