Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 23 Jun 2012 16:02:39 -0500
From:      "Bryan Drewery" <bryan@shatow.net>
To:        FreeBSD-gnats-submit@FreeBSD.org
Cc:        bapt@FreeBSD.org
Subject:   ports/169359: [PATCH] mail/vpopmail: Take maintainership and fix USERS
Message-ID:  <20120623210310.DD0371065679@hub.freebsd.org>
Resent-Message-ID: <201206232110.q5NLAAG6023312@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         169359
>Category:       ports
>Synopsis:       [PATCH] mail/vpopmail: Take maintainership and fix USERS
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          update
>Submitter-Id:   current-users
>Arrival-Date:   Sat Jun 23 21:10:10 UTC 2012
>Closed-Date:
>Last-Modified:
>Originator:     Bryan Drewery
>Release:        FreeBSD 8.3-RELEASE i386
>Organization:
>Environment:

	
>Description:
        - Take maintainership
        - Fix some portlint warnings
        - Add USERS/GROUPS support and remove PERL dependency [ports/157206]
        -- Submitted By: Baptiste Daroussin <bapt@FreeBSD.org>
        - Bump PORTREVISION as the USERS patch fixes failing package building of
          ports depending on mail/vpopmail

        I am working on updating the port to 5.4.33 and supporting OPTIONS, but do not have that ready yet.
	Testing this port will show that /var/qmail/control/locals is an extra, but it's really an optional mail/qmail file. Will look into a way to address that.

	The patch may not properly do it, but the pkg-install file should be deleted.

>How-To-Repeat:
	
>Fix:

	

--- patch-vpopmail-maintainer.txt begins here ---
diff --git Makefile Makefile
index d6014d1..7842691 100644
--- Makefile
+++ Makefile
@@ -7,20 +7,21 @@
 
 PORTNAME=	vpopmail
 PORTVERSION=	5.4.32
-PORTREVISION=	1
+PORTREVISION=	2
 CATEGORIES=	mail
 MASTER_SITES=	SF/${PORTNAME}/${PORTNAME}-stable/${PORTVERSION} \
 		SF/${PORTNAME}/${PORTNAME}-devel/${PORTVERSION}
 
-MAINTAINER=	ports@FreeBSD.org
+MAINTAINER=	bryan@shatow.net
 COMMENT=	Easy virtual domain and authentication package for use with qmail
 
+LICENSE=	GPLv2 GPLv3
+LICENSE_COMB=	dual
+
 BUILD_DEPENDS=	${LOCALBASE}/bin/tcprules:${PORTSDIR}/sysutils/ucspi-tcp
 RUN_DEPENDS=	${LOCALBASE}/bin/tcprules:${PORTSDIR}/sysutils/ucspi-tcp
 
 PATCH_STRIP=	-p1
-LICENSE=	GPLv2 GPLv3
-LICENSE_COMB=	dual
 
 USE_QMAIL=	yes
 
@@ -28,7 +29,9 @@ CONFLICTS=	vpopmail-devel-5.*
 
 GNU_CONFIGURE=	YES
 USE_GMAKE=	YES
-USE_PERL5=	YES
+
+USERS=		vpopmail
+GROUPS=		vchkpw
 
 VCFGDIR?=	${WRKDIR}/vcfg
 VCFGFILES?=	inc_deps lib_deps tcp.smtp
@@ -38,7 +41,9 @@ CONFIGURE_ENV+=	VCFGDIR="${VCFGDIR}" \
 CONFIGURE_ARGS=	--enable-qmaildir=${QMAIL_PREFIX} \
 		--enable-tcprules-prog=${LOCALBASE}/bin/tcprules \
 		--enable-tcpserver-file=${PREFIX}/vpopmail/etc/tcp.smtp \
-		--enable-non-root-build
+		--enable-non-root-build \
+		--enable-vpopuser=${USERS} \
+		--enable-vpopgroup=${GROUPS}
 
 #
 # User-configurable variables
@@ -91,8 +96,6 @@ CONFIGURE_ARGS=	--enable-qmaildir=${QMAIL_PREFIX} \
 # WITH_SQL_LOG_REMOVE_DELETED - remove log entries for deleted users/domains
 # QMAIL_PREFIX  - location of qmail directory
 # PREFIX	- installation area for vpopmail (see comment below)
-# VCHKPW_GID	- the group ID of the new vchkpw group (89)
-# VPOPMAIL_UID	- the user ID of the new vpopmail user (89)
 #
 # PostgreSQL database configuration options
 #
@@ -102,8 +105,7 @@ CONFIGURE_ARGS=	--enable-qmaildir=${QMAIL_PREFIX} \
 # Oracle database configuration options
 #
 # WARNING: This is NOT TESTED, not in the least.
-# Please report any success or failure to the port maintainer,
-# Peter Pentchev <roam@FreeBSD.org>
+# Please report any success or failure to the port maintainer
 #
 # WITH_ORACLE_PROC - the name of the Oracle Pro-C precompiler, default 'proc'
 # WITH_ORACLE_SERVICE - the Oracle service name (jimmy)
@@ -115,8 +117,7 @@ CONFIGURE_ARGS=	--enable-qmaildir=${QMAIL_PREFIX} \
 # Sybase database configuration options
 #
 # WARNING: This is NOT TESTED, not in the least.
-# Please report any success or failure to the port maintainer,
-# Peter Pentchev <roam@FreeBSD.org>
+# Please report any success or failure to the port maintainer
 #
 # WITH_SYBASE_SERVER - the Sybase server name (empty)
 # WITH_SYBASE_USER - the username for connecting to the Sybase server (sa)
@@ -127,8 +128,7 @@ CONFIGURE_ARGS=	--enable-qmaildir=${QMAIL_PREFIX} \
 # Courier IMAP configuration options for authvchkpw
 #
 # WARNING: This is NOT TESTED, not in the least.
-# Please report any success or failure to the port maintainer,
-# Peter Pentchev <roam@FreeBSD.org>
+# Please report any success or failure to the port maintainer
 #
 # WITH_COURIER_IMAPLOGIN - the path to the imaplogin program
 # WITH_COURIER_IMAPD - the path to the imapd program
@@ -254,7 +254,7 @@ CFLAGS+=	-fPIC
 
 # Uncomment this, or set PREFIX to /home if you have an existing
 # vpopmail install with the vpopmail users' home directory set to
-# /home/vpopmail - package rules dictate we default to /usr/local/vpopmail
+# /home/vpopmail - package rules dictate we default to LOCALBASE/vpopmail
 #
 #PREFIX?=	/home
 
@@ -367,7 +367,9 @@ DOCS=		README README.activedirectory README.filelocking \
 #
 
 pre-configure:
-	@PKG_PREFIX=${PREFIX} ${PERL5} ${PKGINSTALL}
+	${AWK} -F: '/^${USERS}:/ { print $$3 }' ${UID_FILES} > ${WRKSRC}/vpopmail.uid
+	${AWK} -F: '/^${USERS}:/ { sub(/\/usr\/local/, "${PREFIX}", $$9); print $$9 }' ${UID_FILES} > ${WRKSRC}/vpopmail.dir
+	${AWK} -F: '/^${GROUPS}:/ { print $$3 }' ${GID_FILES} > ${WRKSRC}/vpopmail.gid
 .if defined(WITH_PGSQL)
 .if defined(WITH_PGSQL_DB)
 	${REINPLACE_CMD} -E -e "s/(#define DB.*)vpopmail(.*)/\1${WITH_PGSQL_DB}\2/" ${WRKSRC}/vpgsql.h
diff --git files/patch-configure files/patch-configure
index 5a9e2e4..af32184 100644
--- files/patch-configure
+++ files/patch-configure
@@ -6,14 +6,17 @@ Description: Configure for the FreeBSD ports build system.
  Pass the correct compiler and linker flags to the cdb build.
  FreeBSD does not need -R $libdir (a.k.a. --rpath) - the MySQL client
  library is added to ldconfig's search path in its own startup script.
+ No need to check for uid/gid.
 Forwarded: not-needed
 Author: Peter Pentchev <roam@FreeBSD.org>,
 	Alex Dupre <ale@FreeBSD.org>,
-	Renato Botelho <garga@FreeBSD.org>
-Last-Update: 2010-09-13
+	Renato Botelho <garga@FreeBSD.org>,
+	Baptiste Daroussin <bapt@FreeBSD.org>
 
---- a/configure
-+++ b/configure
+Last-Update: 2012-06-23
+
+--- configure.orig	2010-11-08 16:02:52.000000000 +0100
++++ configure	2011-05-20 12:21:34.314930656 +0200
 @@ -1403,6 +1403,8 @@
    --enable-onchange-script   Enable onchange script. See README.onchange for more info.
    --enable-spamassassin      Enable spamassassin. See  README.spamassassin for more info.
@@ -23,7 +26,108 @@ Last-Update: 2010-09-13
    --enable-maildrop          Enable maildrop. See  README.maildrop for more info.
    --enable-maildrop-prog=PATH    Full path to maildrop program /usr/{local/}bin/maildrop.
    --enable-domainquotas      Enable non-system domain quotas. See README.quotas for more info.
-@@ -5785,27 +5787,6 @@
+@@ -5663,100 +5665,6 @@
+ 
+ fi
+ 
+-
+-
+-cat >>confdefs.h <<_ACEOF
+-#define VPOPGROUP "$vpopgroup"
+-_ACEOF
+-
+-
+-
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+-$as_echo "yes" >&6; }
+-
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether password file entry for the vpopmail user exists" >&5
+-$as_echo_n "checking whether password file entry for the vpopmail user exists... " >&6; }
+-if test "$cross_compiling" = yes; then :
+-  as_fn_error "Could not compile and run even a trivial ANSI C program - check CC." "$LINENO" 5
+-
+-else
+-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+-/* end confdefs.h.  */
+-
+-  #include <stdio.h>
+-  #include <pwd.h>
+-  #include <stdlib.h>
+-
+-  int main() {
+-    struct passwd *pw;
+-    char tmpbuf[100];
+-    FILE *f;
+-
+-        unlink("vpopmail.dir");
+-        unlink("vpopmail.uid");
+-        unlink("vpopmail.gid");
+-
+-        if ( (f=fopen("vpopusername","r+"))==NULL) {
+-                printf("No vpopmail user found.\n");
+-                printf("Please add the vchkpw group and\n");
+-                printf("vpopmail user. Then run configure again\n");
+-                return(-1);
+-        }
+-
+-        fgets(tmpbuf,100,f);
+-        fclose(f);
+-        tmpbuf[strlen(tmpbuf)-1] = 0;
+-
+-        if (( pw=getpwnam(tmpbuf)) != 0 ) {
+-                f=fopen("vpopmail.dir","a+");
+-                fprintf(f,"%s\n", pw->pw_dir);
+-                fclose(f);
+-
+-                f=fopen("vpopmail.uid", "a+");
+-                fprintf(f,"%d\n", pw->pw_uid);
+-                fclose(f);
+-
+-                f=fopen("vpopmail.gid", "a+");
+-                fprintf(f,"%d\n", pw->pw_gid);
+-                fclose(f);
+-        } else {
+-                printf("No vpopmail user found.\n");
+-                printf("Please add the vchkpw group and\n");
+-                printf("vpopmail user. Then run configure again\n");
+-                return(-1);
+-        }
+-        return(0);
+-  }
+-
+-_ACEOF
+-if ac_fn_c_try_run "$LINENO"; then :
+-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+-$as_echo "yes" >&6; }
+-else
+-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+-$as_echo "no" >&6; }
+-    as_fn_error "Could not compile and run even a trivial ANSI C program - check CC." "$LINENO" 5
+-fi
+-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+-  conftest.$ac_objext conftest.beam conftest.$ac_ext
+-fi
+-
+-
+-if test ! -f vpopmail.uid
+-then
+-        as_fn_error "No vpopmail user." "$LINENO" 5
+-fi
+-
+-if test ! -f vpopmail.gid
+-then
+-        as_fn_error "No vpopmail group." "$LINENO" 5
+-fi
+-
+-if test ! -f vpopmail.dir
+-then
+-        as_fn_error "No vpopmail home directory" "$LINENO" 5
+-fi
+-
+ vpopmaildir=`cat vpopmail.dir`
+ 
+ 
+@@ -5785,27 +5693,6 @@
  
  #----------------------------------------------------------------------
  
@@ -51,7 +155,7 @@ Last-Update: 2010-09-13
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether roaming-users has been enabled" >&5
  $as_echo_n "checking whether roaming-users has been enabled... " >&6; }
  # Check whether --enable-roaming-users was given.
-@@ -5888,28 +5869,11 @@
+@@ -5888,28 +5775,11 @@
      # Check whether --enable-tcpserver_file was given.
  if test "${enable_tcpserver_file+set}" = set; then :
    enableval=$enable_tcpserver_file; tcpserver_file="$enableval"
@@ -81,7 +185,7 @@ Last-Update: 2010-09-13
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
  $as_echo "yes" >&6; }
  
-@@ -6414,6 +6378,44 @@
+@@ -6414,6 +6284,44 @@
  #define SPAMC_PROG "$spamc_prog"
  _ACEOF
  
@@ -126,7 +230,7 @@ Last-Update: 2010-09-13
  
        ;;
  esac
-@@ -6664,7 +6666,7 @@
+@@ -6664,7 +6572,7 @@
          as_fn_error "Unable to find your MySQL lib dir, specify --enable-libdir." "$LINENO" 5
      fi
  
@@ -135,7 +239,7 @@ Last-Update: 2010-09-13
  
      ;;
  
-@@ -6727,7 +6729,7 @@
+@@ -6727,7 +6635,7 @@
  #define USE_LDAP $USE_LDAP
  _ACEOF
  
@@ -144,7 +248,7 @@ Last-Update: 2010-09-13
  
      auth_inc="-I/usr/local/include"
  
-@@ -9029,8 +9031,8 @@
+@@ -9029,8 +8937,8 @@
      ;;
  esac
  
diff --git pkg-install pkg-install
deleted file mode 100755
index f435231..0000000
--- pkg-install
+++ /dev/null
@@ -1,109 +0,0 @@
-#!/usr/bin/perl
-#
-
-@groups = ("vchkpw");
-%users = ('vpopmail', "vchkpw");
-# daemon, local, pop, queue, remote, deliver, respectively.
-# alias is a special case above...
-%gids = ("vchkpw", 89);
-%uids = ('vpopmail', 89);
-
-sub checkenv () {
-	my ($u, $g);
-
-	# Users
-	foreach $u (keys %users) {
-		$var = uc($u)."_UID";
-		if (defined($ENV{$var})) {
-			$uids{$u} = $ENV{$var};
-		}
-	}
-
-	# Groups
-	foreach $g (@groups) {
-		$var = uc($g)."_GID";
-		if (defined($ENV{$var})) {
-			$gids{$g} = $ENV{$var};
-		}
-	}
-}
-
-if ($ENV{PACKAGE_BUILDING} || $ARGV[1] eq "PRE-INSTALL") {
-	$doguid=1;  # Make sure we get the assigned guids.
-}
-
-checkenv();
-
-foreach $group (@groups) {
-	if (! getgrnam ($group)) {
-		do checkrpw;  # May exit
-
-		$x = "-g $gids{$group}";
-		$result = system ("/usr/sbin/pw groupadd $group $x");
-		if ($result) {
-			die "Failed to add group $group as gid $gids{$group}\n";
-		}
-	}
-}
-
-if (! getpwnam ("alias")) {
-	do checkrpw;  # May exit
-
-	$x = "-u $uids{'alias'}";
-	$result = system ("/usr/sbin/pw useradd alias -g qnofiles -d \"$ENV{PKG_PREFIX}/vpopmail/alias\" -s /nonexistent $x");
-	if ($result) {
-		die "Failed to add user alias as uid $uids{'alias'}\n";
-	}
-}
-
-foreach $user (keys %users) {
-	if (! getpwnam ($user)) {
-		do checkrpw;  # May exit
-
-		$x = "-u $uids{$user}";
-		$result = system ("/usr/sbin/pw useradd $user -g $users{$user} -d \"$ENV{PKG_PREFIX}/vpopmail\" -s /nonexistent $x");
-		if ($result) {
-			die "Failed to add user $user as uid $uids{$user}\n";
-		}
-	}
-}
-
-# Check that all gids/uids are as they should be...
-# If we are being installed as a package...
-if ($doguid) {
-	foreach $group (@groups) {
-		if (getgrnam($group) != $gids{$group}) {
-			die "Group $group should have gid $gids{$group}\n";
-		}
-	}
-
-	foreach $user (keys %users) {
-		if (getpwnam($user) != $uids{$user}) {
-			die "User $user should have uid $uids{$user}\n";
-		}
-	}
-}
-
-exit 0;
-
-sub checkrpw {
-	if (! -x "/usr/sbin/pw") {
-		print <<'EOM';
-This system looks like a pre-2.2 version of FreeBSD.  We see that it
-is missing the "pw" utility.  We need this utility.  Please get and
-install it, and try again.  You can get the source from:
-
-  ftp://ftp.freebsd.org/pub/FreeBSD/FreeBSD-current/src/usr.sbin/pw.tar.gz
-
-EOM
-		die "No /usr/sbin/pw";
-	}
-
-	if ($> != 0) {
-		print "It is necessary to add missing vpopmail users/groups at";
-		print "this stage.  Please either add them manually or retry";
-		print "as root.";
-		# Let pw(1) signal the failure so the user can see which
-		# group/user is actually missing.
-	}
-}
--- patch-vpopmail-maintainer.txt ends here ---


>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120623210310.DD0371065679>