aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--databases/gnats4/Makefile26
-rw-r--r--databases/gnats4/distinfo1
-rw-r--r--databases/gnats4/files/extrapatch-gnats::edit-pr.sh265
-rw-r--r--databases/gnats4/files/patch-gnats::Makefile.in38
-rw-r--r--databases/gnats4/pkg-descr2
5 files changed, 317 insertions, 15 deletions
diff --git a/databases/gnats4/Makefile b/databases/gnats4/Makefile
index 33fe8ac923de..0dfd2138d824 100644
--- a/databases/gnats4/Makefile
+++ b/databases/gnats4/Makefile
@@ -26,10 +26,21 @@ CONFLICTS= gnats-3.*
PKGMESSAGE= ${WRKDIR}/pkg-message
PKGINSTALL= ${WRKDIR}/pkg-install
-GNATSDBBASE?= /var/db
+.ifdef WANT_FREEFALL_CFG
+EXTRA_PATCHES+= ${PATCHDIR}/extrapatch-*
-CONFIGURE_ARGS= --sharedstatedir=${GNATSDBBASE}/gnats \
- --datadir=${GNATSDBBASE}
+GNATSDBDIR= ${DATADIR}
+
+CONFIGURE_ARGS+= --with-gnats-default-db=${GNATSDBDIR}/gnats-db
+
+WITH_SUBMITTER_ID= current-users
+WITH_ORGANIZATION= FreeBSD
+WITH_GNATSD_SERVICE= support
+.endif
+
+GNATSDBDIR?= /var/db/gnats
+
+CONFIGURE_ARGS+= --sharedstatedir=${GNATSDBDIR}
.ifdef WITH_SUBMITTER_ID
CONFIGURE_ARGS+= --with-submitter=${WITH_SUBMITTER_ID}
@@ -43,7 +54,7 @@ CONFIGURE_ARGS+= --with-organization=${WITH_ORGANIZATION:Q}
CONFIGURE_ARGS+= --with-gnats-service=${WITH_GNATSD_SERVICE}
.endif
-PLIST_SUB= GNATSDBDIR=${GNATSDBBASE}/gnats
+PLIST_SUB= GNATSDBDIR=${GNATSDBDIR}
MAN1= edit-pr.1 query-pr.1 send-pr.1
MAN5= databases.5 dbconfig.5
@@ -72,6 +83,7 @@ CONFLICTS+= ${PKGNAMEPREFIX}${PORTNAME}-client-4.*
.endif
pre-everything::
+.if !defined(PACKAGE_BUILDING) && !defined(WANT_FREEFALL_CFG)
@${ECHO} "============================================================="
@${ECHO}
@${ECHO} "You can build ${PKGNAME} with the following options:"
@@ -83,11 +95,15 @@ pre-everything::
@${ECHO}
@${ECHO} "============================================================="
@${ECHO}
+.endif
+
+pre-configure:
+ @${ECHO_CMD} 'RELEASE_TAG="\`uname -srm\`"' > ${WRKSRC}/release-info
post-build:
@for doc in pkg-message pkg-install; do \
${SED} -e 's,%%PREFIX%%,${PREFIX},g' \
- -e 's,%%GNATSDBDIR%%,${GNATSDBBASE}/gnats,g' \
+ -e 's,%%GNATSDBDIR%%,${GNATSDBDIR},g' \
${PKGDIR}/$${doc} >${WRKDIR}/$${doc} ; \
done
diff --git a/databases/gnats4/distinfo b/databases/gnats4/distinfo
index bb326b44ae6d..e3c7ee585bc5 100644
--- a/databases/gnats4/distinfo
+++ b/databases/gnats4/distinfo
@@ -1 +1,2 @@
MD5 (gnats-4.0.tar.gz) = 3bf0d3336b976549553c64ac4bc15f75
+SIZE (gnats-4.0.tar.gz) = 1561192
diff --git a/databases/gnats4/files/extrapatch-gnats::edit-pr.sh b/databases/gnats4/files/extrapatch-gnats::edit-pr.sh
new file mode 100644
index 000000000000..f4f7c1aa8015
--- /dev/null
+++ b/databases/gnats4/files/extrapatch-gnats::edit-pr.sh
@@ -0,0 +1,265 @@
+--- gnats/edit-pr.sh.orig Sun May 26 16:32:02 2002
++++ gnats/edit-pr.sh Sat Dec 6 02:43:44 2003
+@@ -5,6 +5,8 @@
+ # Contributed by Jeffrey Osier (jeffrey@cygnus.com).
+ # Majorly revised by Bob Manson (manson@juniper.net).
+ # Further improvements by Dirk Bergstrom (dirk@juniper.net).
++# Patches for the FreeBSD Project by Ceri Davies (ceri@FreeBSD.org),
++# based on work by Paul Richards (paul@FreeBSD.org).
+ #
+ # This file is part of GNU GNATS.
+ #
+@@ -24,9 +26,12 @@
+
+ debug_print=false # or echo to get output.
+ BINDIR=xBINDIRx
++DATE=`LC_TIME=C date` # Some prstats tools rely on this format
++GNATS_ROOT=${GNATS_ROOT:-/usr/local/share/gnats/gnats-db}; export GNATS_ROOT
+ LIBEXECDIR=xLIBEXECDIRx
+ GNATS_PORT=
+ locked=
++rc=0
+ version=xVERSIONx
+
+ usage="
+@@ -99,28 +104,23 @@
+
+ *)
+ if [ "`echo $1 | grep /`" != "" ]; then
+- pr_id=`echo $1 | awk -F"/" '{print $2}' -`
++ pr=`echo $1 | awk -F"/" '{print $2}' -`
+ else
+- pr_id=$1
++ pr=$1
+ fi
++ prs="$prs $pr"
+ ;;
+ esac
+ shift
+ done
+
++chng_tpl="${GNATS_ROOT}/gnats-adm/edit-pr-msg"
++
+ # set command here to always pass host and port, and directory if supplied
+ QUERY_PR="$BINDIR/query-pr $GNATS_HOST $GNATS_PORT $GNATS_DB $EDIT_USER $EDIT_PASSWD"
+ PR_ADDR="$QUERY_PR --responsible-address"
+ PR_EDIT="$LIBEXECDIR/gnats/pr-edit $GNATS_HOST $GNATS_PORT $EDIT_USER $EDIT_PASSWD $GNATS_DB"
+
+-# These traps take care of deleting all the /tmp files
+-trap 'rm -f $new.old $change_msg $fixfil' 0
+-# Don't delete $new on error signals
+-trap 'if [ "$locked" != "" ]; then \
+- $PR_EDIT --unlock $pr_id ; \
+- locked= ; \
+- fi' 1 2 3 13 15
+-
+ # find a user name
+ if [ "$USER" != "" ]; then
+ me=$USER
+@@ -138,85 +138,45 @@
+ full_me="$me"
+ fi
+
++for pr_id in $prs ; do
++
++epdir=`mktemp -d /tmp/epXXXXXX || exit 75`
++chng_msg="$epdir/chng.$pr_id.$$"
+ # new = temp file to use for editing
+-new="/tmp/ep$$"
+-newtmp="/tmp/ep$$.tp"
+-change_msg="/tmp/ep$$.ch"
+-fixfil="/tmp/ep$$.fx"
++new="$epdir/$pr_id.ep$$"
++change_msg="$epdir/ep$$.$pr_id.ch"
++keepnew=
++
++# These traps take care of deleting all the /tmp files
++trap 'rm -f $new.old $change_msg chng_msg; rmdir $epdir 2>/dev/null' 0
++trap 'if [ "$locked" != "" ]; then \
++ $PR_EDIT --unlock $pr_id ; \
++ locked= ; \
++ fi; \
++ rm -f $new.old $change_msg chng_msg; rmdir $epdir 2>/dev/null' 1 2 3 13 15
++
+
+ # lock the pr
+ $debug_print "Locking $pr_id."
+-lock=`$PR_EDIT --lock=$full_me --process=$$ $pr_id 2>&1 > $new`
++lock=`$PR_EDIT --lock=$me --process=$$ $pr_id 2>&1 > $new`
+ locked=t
+
+ if [ "$lock" != "" ] ; then
++ echo "Failed to lock PR $pr_id"
+ echo $lock
+- exit 0
++ rc=1
++ rm -r $epdir
++ continue
+ fi
+
+-rm -f $fixfil
+-
+-# Now add any missing fields, along with a description.
+-
+-$QUERY_PR --list-fields | while read field
+-do
+- grep -i "^>${field}:" "$new" > /dev/null 2>&1
+- if [ $? != 0 ]
+- then
+- $QUERY_PR --field-flags "$field" | grep -i readonly > /dev/null 2>&1
+- if [ $? != 0 ]
+- then
+- type="`$QUERY_PR --field-type $field`"
+- case $type in
+- [Ee][Nn][Uu][Mm])
+- values=`$QUERY_PR --valid-values $field | tr '\n' ' ' | sed 's/ *$//g; s/ / | /g;s/^/[ /;s/$/ ]/;`
+- valslen=`echo "$values" | wc -c`
+- if [ "$valslen" -gt 160 ]
+- then
+- desc="<`$QUERY_PR --field-description $field` (one line)>";
+- else
+- desc="<${values} (one line)>";
+- fi
+- dpat=`echo "$desc" | tr '][*+^$|\()&/' '............'`
+- echo "/^>${field}:/ s/${dpat}//" >> $fixfil
+- echo "/>${field}: ${desc}" >> $new;
+- ;;
+- [Mm][Uu][Ll][Tt][Ii][Tt][Ee][Xx][Tt])
+- desc=" <`$QUERY_PR --field-description $field` (multiple lines)>";
+- dpat=`echo "$desc" | tr '][*+^$|\()&/' '............'`
+- echo "s/^${dpat}//" >> $fixfil
+- echo ">${field}:" >> $new;
+- echo "$desc" >> $new;
+- ;;
+- *)
+- desc="<`$QUERY_PR --field-description $field` (one line)>"
+- dpat=`echo "$desc" | tr '][*+^$|\()&/' '............'`
+- echo "/^>${field}:/ s/${dpat}//" >> $fixfil
+- echo ">${field}: ${desc}" >> $new
+- ;;
+- esac
+- else
+- prevfld="$field";
+- fi
+- fi
+-done
+-
+ # here's where we actually call the editor.
+ cp $new $new.old
+ $VISUAL $new
+ if cmp -s $new.old $new ; then
+ echo "edit-pr: PR not changed"
+ $PR_EDIT --unlock $pr_id
+- exit 0
+-fi
+-
+-if [ -f $fixfil ]
+-then
+- sed -f $fixfil < $new > $newtmp
+- mv $newtmp $new
+- sed -f $fixfil < $new.old > $newtmp
+- mv $newtmp $new.old
+- rm -f $fixfil
++ rm -r $epdir
++ continue
+ fi
+
+ # error-check output by calling pr-edit --check; if mistakes exist,
+@@ -233,7 +193,7 @@
+ echo "PR $pr_id not updated: changed file is in $new.changed"
+ mv $new $new.changed
+ $PR_EDIT --unlock $pr_id
+- exit 0
++ continue 2
+ ;;
+ esac
+ $VISUAL $new
+@@ -242,24 +202,37 @@
+ fi
+ done
+
+-exec 3<&0
+-
+ #
+ # Find out what fields have changed; if the changed field requires a
+ # change reason, then ask about it.
+ #
+-$LIBEXECDIR/gnats/diff-prs $new.old $new | while read field
++
++changed_fields=`$LIBEXECDIR/gnats/diff-prs $new.old $new`
++for field in $changed_fields
+ do
+ flags=`$QUERY_PR --field-flags $field` || echo "edit-pr: Invalid field name $field" 1>&2;
+
+ if echo "$flags" | grep -i "requirechangereason" > /dev/null 2>&1
+ then
+- echo ">${field}-Changed-Why:" >> $change_msg;
+- echo "Why did the $field field change? (Ctrl-D to end)";
+- cat 0<&3 >> $change_msg;
++ $debug_print "Doing $field change."
++ echo ">$field-Changed-Why: " >> $change_msg
++ if [ -e $chng_msg ]; then
++ echo "Re-use last message (y/n)?"
++ read yesno
++ if [ "$yesno" != "y" ]; then
++ sed "s/%%ITEM%%/$field/" $chng_tpl > $chng_msg
++ fi
++ else
++ sed "s/%%ITEM%%/$field/" $chng_tpl > $chng_msg
++ fi
++ $VISUAL $chng_msg
++ sed '/^GNATS:/d' $chng_msg >> $change_msg
+ fi
+ done
+
++echo "" >> $change_msg
++echo "http://www.FreeBSD.org/cgi/query-pr.cgi?pr=$pr_id" >> $change_msg
++
+ if [ -f $change_msg ]
+ then
+ cat $change_msg >> $new
+@@ -269,12 +242,12 @@
+ # Submit the changed PR.
+ #
+ while true; do
+- if $PR_EDIT --email-addr "$full_me" $pr_id < $new
++ if $PR_EDIT --email-addr "$me" $pr_id < $new
+ then
+ echo "Edit successful"
+ # we need to unlock the PR
+ $PR_EDIT --unlock $pr_id
+- exit 0
++ break
+ else
+ echo "Problems with edit submission."
+ fi
+@@ -284,9 +257,11 @@
+ case "$input" in
+ a*)
+ echo "Cancelling edit. Changed PR is in $new."
+- # we need to ulock the PR no matter what
++ # we need to unlock the PR no matter what
+ $PR_EDIT --unlock $pr_id
+- exit 1 ;;
++ keepnew=y
++ rc=1
++ break 2 ;;
+ r*)
+ break ;;
+ *)
+@@ -296,6 +271,13 @@
+ done
+ done
+
+-rm -f $new
++rm -f $chng_msg $new.old $change_msg
++if [ "$keepnew" != "y" ]; then
++ rm -f $new
++ rmdir $epdir
++fi
++keepnew=
++
++done # for pr_id in $prs
+
+-exit 0
++exit $rc
diff --git a/databases/gnats4/files/patch-gnats::Makefile.in b/databases/gnats4/files/patch-gnats::Makefile.in
index d0bce49b1d86..bc417e681d43 100644
--- a/databases/gnats4/files/patch-gnats::Makefile.in
+++ b/databases/gnats4/files/patch-gnats::Makefile.in
@@ -1,5 +1,5 @@
--- gnats/Makefile.in.orig Sun Jul 27 01:23:17 2003
-+++ gnats/Makefile.in Mon Sep 22 05:41:57 2003
++++ gnats/Makefile.in Thu Sep 25 02:30:32 2003
@@ -91,7 +91,7 @@
INSTALL = $(srcdir)/../install-sh -c
@@ -9,7 +9,15 @@
INSTALL_DATA = @INSTALL_DATA@
SUB_INSTALL = `echo $(INSTALL) | sed 's,^\([^/]\),../\1,'`
-@@ -163,7 +163,7 @@
+@@ -107,6 +107,7 @@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
+ statedir = @datadir@
++sharedstatedir = @sharedstatedir@
+ sysconfdir = @sysconfdir@
+
+ program_transform_name =
+@@ -163,7 +164,7 @@
check-db delete-pr dbconfig gnats-databases gnats-pwconv $(EXTRA_STUFF)
all-tools: libgnats.a query-pr pr-age pr-edit edit-pr file-pr getclose \
@@ -18,18 +26,30 @@
libgnats.a: $(LIBOBJS)
-rm -f tmplibgnats.a libgnats.a
-@@ -371,7 +371,9 @@
+@@ -363,15 +364,17 @@
+ install-tools-arch-dep: install-tools-bin
+
+ install-tools-arch-indep: all-tools
+- $(SHELL) $(srcdir)/../mkinstalldirs $(datadir)/gnats
++ $(SHELL) $(srcdir)/../mkinstalldirs $(sharedstatedir)
+ $(SHELL) $(srcdir)/../mkinstalldirs $(sysconfdir)/gnats/defaults
+ @if [ `whoami` = root -o `whoami` = $(GNATS_USER) ] ; then \
+- echo "chown $(GNATS_USER) $(datadir)/gnats" ; \
+- chown $(GNATS_USER) $(datadir)/gnats ; \
++ echo "chown $(GNATS_USER) $(sharedstatedir)" ; \
++ chown $(GNATS_USER) $(sharedstatedir) ; \
else \
- echo "*** Warning: Must chown $(GNATS_USER) $(datadir)/gnats" ; \
- fi
-- $(INSTALL_DATA) $(srcdir)/gnats.el $(lispdir)/gnats.el
+- echo "*** Warning: Must chown $(GNATS_USER) $(datadir)/gnats" ; \
++ echo "*** Warning: Must chown $(GNATS_USER) $(sharedstatedir)" ; \
++ fi
+ @if [ x"$(lispdir)" != x ]; then \
+ $(INSTALL_DATA) $(srcdir)/gnats.el $(lispdir)/gnats.el ; \
-+ fi
+ fi
+- $(INSTALL_DATA) $(srcdir)/gnats.el $(lispdir)/gnats.el
for i in categories submitters responsible gnatsd.user_access addresses states classes dbconfig ; do \
if [ -f "$$i" ] ; then \
$(INSTALL_DATA) $$i $(sysconfdir)/gnats/defaults/$$i ; \
-@@ -386,7 +388,7 @@
+@@ -386,7 +389,7 @@
$(INSTALL_SCRIPT) edit-pr $(bindir)/edit-pr
$(INSTALL_SCRIPT) $(srcdir)/diff-prs $(libexecdir)/gnats/diff-prs
$(INSTALL_SCRIPT) mail-agent $(libexecdir)/gnats/mail-agent
@@ -38,7 +58,7 @@
$(INSTALL_PROGRAM) pr-age $(libexecdir)/gnats/pr-age
$(INSTALL_PROGRAM) pr-edit $(libexecdir)/gnats/pr-edit
@if [ `whoami` = root -o `whoami` = $(GNATS_USER) ] ; then \
-@@ -404,29 +406,29 @@
+@@ -404,29 +407,29 @@
install-gnats-arch-dep: install-gnats-bin $(EXTRA_INSTALL)
install-gnats-arch-indep: all-gnats install-tools-arch-indep
diff --git a/databases/gnats4/pkg-descr b/databases/gnats4/pkg-descr
index 3d25ffcb8cf2..5eeaeb06c00c 100644
--- a/databases/gnats4/pkg-descr
+++ b/databases/gnats4/pkg-descr
@@ -8,4 +8,4 @@ querying, editing and maintaining these databases.
WWW: http://www.gnu.org/software/gnats/
- Oliver Eikemeier
-eikemeier@fillmore-labs.com
+eik@FreeBSD.org