From admin@spare.westbend.net Wed Sep  8 19:13:14 1999
Return-Path: <admin@spare.westbend.net>
Received: from spare.westbend.net (news.westbend.net [209.224.254.133])
	by hub.freebsd.org (Postfix) with ESMTP id DBB5814D42
	for <FreeBSD-gnats-submit@freebsd.org>; Wed,  8 Sep 1999 19:13:13 -0700 (PDT)
	(envelope-from admin@spare.westbend.net)
Received: (from root@localhost)
	by spare.westbend.net (8.9.3/8.9.3) id VAA58251;
	Wed, 8 Sep 1999 21:12:25 -0500 (CDT)
	(envelope-from admin)
Message-Id: <199909090212.VAA58251@spare.westbend.net>
Date: Wed, 8 Sep 1999 21:12:25 -0500 (CDT)
From: hetzels@westbend.net
Sender: admin@spare.westbend.net
Reply-To: hetzels@westbend.net
To: FreeBSD-gnats-submit@freebsd.org
Subject: Conflict Checking for PKG_INSTALL tools (4.0-CURRENT)
X-Send-Pr-Version: 3.2

>Number:         13649
>Category:       bin
>Synopsis:       Enhancement to PKG_INSTALL tools (4.0-CURRENT)
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    portmgr
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Wed Sep  8 19:20:02 PDT 1999
>Closed-Date:    Fri Jan 31 09:45:38 PST 2003
>Last-Modified:  Fri Jan 31 09:45:38 PST 2003
>Originator:     Scot W. Hetzel
>Release:        FreeBSD 4.0-CURRENT i386
>Organization:
West Bend Internet
>Environment:


>Description:

The attached patch adds additional functionality to the pkg_install tools.

pkg_info can now do pattern matcing:

# pkg_info -e cv*
cvsup-16.0
cvsup-mirrot-1.0

This will also allow bsd.port.mk (with appropriate patch) and pkg_add to check for conflicting ports
before installing a port.

pkg_create adds port conflicts to the package.

With the appropriate patches to bsd.port.mk, a port that has the following
 in its Makefile:

CONFLICTS=      apache*-1.2* apache*-1.3.[012345] apache-*+ssl_*

will result in @pkgcfl directives in its packing list.

@pkgcfl apache*-1.2*
@pkgcfl apache*-1.3.[012345]
@pkgcfl apache-*+ssl_*


>How-To-Repeat:


>Fix:
	
Apply the attached uuenoded patch to the pkg_install tools.


begin 644 pkg_install4.diff.gz
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
0V?U&2FKX_P..[SP0S.0``$B)
`
end

>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-bugs->billf 
Responsible-Changed-By: billf 
Responsible-Changed-When: Fri Sep 24 14:02:30 PDT 1999 
Responsible-Changed-Why:  
I'm going to look at this, test it, and pass the patches that Satoshi 
needs over to him. 
State-Changed-From-To: open->closed 
State-Changed-By: sobomax 
State-Changed-When: Thu Oct 11 04:13:22 PDT 2001 
State-Changed-Why:  
Similar functionality has been committed some time ago. Nevertheless, thank you 
for submission! 

http://www.freebsd.org/cgi/query-pr.cgi?pr=13649 

From: "Scot W. Hetzel" <hetzels@westbend.net>
To: <sobomax@FreeBSD.org>, <billf@FreeBSD.org>
Cc: <FreeBSD-gnats-submit@FreeBSD.org>
Subject: Re: bin/13649: Enhancement to PKG_INSTALL tools (4.0-CURRENT)
Date: Thu, 11 Oct 2001 10:46:28 -0500

 From: <sobomax@FreeBSD.org>
 > Synopsis: Enhancement to PKG_INSTALL tools (4.0-CURRENT)
 >
 > State-Changed-From-To: open->closed
 > State-Changed-By: sobomax
 > State-Changed-When: Thu Oct 11 04:13:22 PDT 2001
 > State-Changed-Why:
 > Similar functionality has been committed some time ago. Nevertheless,
 thank you
 > for submission!
 >
 > http://www.freebsd.org/cgi/query-pr.cgi?pr=13649
 >
 While the pattern matching was added to the pkg-install tools, the main
 purpose of this PR was to add PACKAGE DEPENDANCY CONFLICT DETECTION between
 different versions and port revisions of the same port (the pattern matching
 was just a side effect).
 
 Also, the PACKAGE DEPENDANCY CONFLICT DETECTION would have been written into
 the ports package.
 
 This would have helped people out with installing the larger ports with many
 dependencies, especially the GNOME and KDE ports.
 
 Scot
 
 
 
 
 
 
State-Changed-From-To: closed->open 
State-Changed-By: sobomax 
State-Changed-When: Tue Oct 16 06:47:04 PDT 2001 
State-Changed-Why:  
Was closed prematurely (my fault). In originator's words: 

While the pattern matching was added to the pkg-install tools, the main 
purpose of this PR was to add PACKAGE DEPENDANCY CONFLICT DETECTION between 
different versions and port revisions of the same port (the pattern matching 
was just a side effect). 

Also, the PACKAGE DEPENDANCY CONFLICT DETECTION would have been written into 
the ports package. 

This would have helped people out with installing the larger ports with many 
dependencies, especially the GNOME and KDE ports. 

http://www.FreeBSD.org/cgi/query-pr.cgi?pr=13649 

From: Maxim Sobolev <sobomax@FreeBSD.org>
To: "Scot W. Hetzel" <hetzels@westbend.net>
Cc: billf@FreeBSD.org, FreeBSD-gnats-submit@FreeBSD.org
Subject: Re: bin/13649: Enhancement to PKG_INSTALL tools (4.0-CURRENT)
Date: Tue, 16 Oct 2001 16:50:55 +0300

 "Scot W. Hetzel" wrote:
 
 > From: <sobomax@FreeBSD.org>
 > > Synopsis: Enhancement to PKG_INSTALL tools (4.0-CURRENT)
 > >
 > > State-Changed-From-To: open->closed
 > > State-Changed-By: sobomax
 > > State-Changed-When: Thu Oct 11 04:13:22 PDT 2001
 > > State-Changed-Why:
 > > Similar functionality has been committed some time ago. Nevertheless,
 > thank you
 > > for submission!
 > >
 > > http://www.freebsd.org/cgi/query-pr.cgi?pr=13649
 > >
 > While the pattern matching was added to the pkg-install tools, the main
 > purpose of this PR was to add PACKAGE DEPENDANCY CONFLICT DETECTION between
 > different versions and port revisions of the same port (the pattern matching
 > was just a side effect).
 >
 > Also, the PACKAGE DEPENDANCY CONFLICT DETECTION would have been written into
 > the ports package.
 >
 > This would have helped people out with installing the larger ports with many
 > dependencies, especially the GNOME and KDE ports.
 
 OOPS, sorry, my fault. I've just reopened it.
 
 -Maxim
 
Responsible-Changed-From-To: billf->portmgr 
Responsible-Changed-By: billf 
Responsible-Changed-When: Wed May 1 16:36:59 PDT 2002 
Responsible-Changed-Why:  
i once was going to look at this, but it is now portmgr material. 


http://www.freebsd.org/cgi/query-pr.cgi?pr=13649 

From: "Sergey Matveychuk" <sem@ciam.ru>
To: <freebsd-gnats-submit@FreeBSD.org>
Cc:  
Subject: Re: bin/13649: Enhancement to PKG_INSTALL tools (4.0-CURRENT)
Date: Mon, 18 Nov 2002 21:27:14 +0300

 This PR was reopened accidentally by sobomax.
 It's time to close it again?
 
 ----
 Sem.
 

From: "Sergey Matveychuk" <sem@ciam.ru>
To: <freebsd-gnats-submit@FreeBSD.org>
Cc:  
Subject: Re: bin/13649: Enhancement to PKG_INSTALL tools (4.0-CURRENT)
Date: Fri, 29 Nov 2002 18:43:18 +0300

 Sorry, I'v mistaken. I thought this patch was applaied already.
 
 Really Scot made a lot of hard work that was ignored :(
 
 ----
 Sem.
 

From: "Sergey Matveychuk" <sem@ciam.ru>
To: <freebsd-gnats-submit@FreeBSD.org>, <hetzels@westbend.net>
Cc:  
Subject: Re: bin/13649: Enhancement to PKG_INSTALL tools (4.0-CURRENT)
Date: Sun, 1 Dec 2002 23:38:55 +0300

 This is a multi-part message in MIME format.
 
 ------=_NextPart_000_0007_01C29992.CFDB0EB0
 Content-Type: text/plain;
 	charset="koi8-r"
 Content-Transfer-Encoding: 7bit
 
 Patch to add conflicts detection to -CURRENT pkg_install
 
 ----
 Sem.
 ------=_NextPart_000_0007_01C29992.CFDB0EB0
 Content-Type: application/octet-stream;
 	name="pkg_install.patch"
 Content-Transfer-Encoding: quoted-printable
 Content-Disposition: attachment;
 	filename="pkg_install.patch"
 
 diff -ruN /tmp/current/src/usr.sbin/pkg_install/add/perform.c =
 pkg_install/add/perform.c=0A=
 --- /tmp/current/src/usr.sbin/pkg_install/add/perform.c	Tue Sep  3 =
 10:59:33 2002=0A=
 +++ pkg_install/add/perform.c	Sun Dec  1 21:29:21 2002=0A=
 @@ -77,6 +77,7 @@=0A=
      char pre_script[FILENAME_MAX] =3D INSTALL_FNAME;=0A=
      char post_script[FILENAME_MAX];=0A=
      char pre_arg[FILENAME_MAX], post_arg[FILENAME_MAX];=0A=
 +    int conflictsfound=3D0;=0A=
  =0A=
      code =3D 0;=0A=
      zapLogDir =3D 0;=0A=
 @@ -246,6 +247,36 @@=0A=
  	      Plist.name);=0A=
  	code =3D 1;=0A=
  	goto success;	/* close enough for government work */=0A=
 +    }=0A=
 +=0A=
 +    /* Now check the packing list for conflicts */=0A=
 +    for (p =3D Plist.head; p ; p =3D p->next) {=0A=
 +	if (p->type =3D=3D PLIST_PKGCFL) {=0A=
 +	    char *conflict[2];=0A=
 +	    char **matched;=0A=
 +	    int i,errcode;=0A=
 +=0A=
 +	    conflict[0]=3Dstrdup(p->name);=0A=
 +	    conflict[1]=3DNULL;=0A=
 +	    matched =3D matchinstalled(MATCH_GLOB,conflict,&errcode);=0A=
 +	    if(errcode =3D=3D 0 && matched !=3D NULL)=0A=
 +		for(i=3D0; matched[i] !=3D NULL; i++)=0A=
 +		    if(isinstalledpkg(matched[i])) {=0A=
 +			warnx("Package '%s' conflicts with %s", Plist.name,=0A=
 +								matched[i]);=0A=
 +			conflictsfound=3D1;=0A=
 +		    }=0A=
 +=0A=
 +	    continue;=0A=
 +	}=0A=
 +    }=0A=
 +    if(conflictsfound) {=0A=
 +	if(!Force) {=0A=
 +	    warnx("please use pkg_delete first to remove it (them)");=0A=
 +	    code =3D 1;=0A=
 +	    goto bomb;=0A=
 +	} else=0A=
 +	    warnx("proceeding anyway");=0A=
      }=0A=
  =0A=
      /* Now check the packing list for dependencies */=0A=
 diff -ruN /tmp/current/src/usr.sbin/pkg_install/add/pkg_add.1 =
 pkg_install/add/pkg_add.1=0A=
 --- /tmp/current/src/usr.sbin/pkg_install/add/pkg_add.1	Tue Sep 10 =
 06:42:59 2002=0A=
 +++ pkg_install/add/pkg_add.1	Sun Dec  1 22:08:59 2002=0A=
 @@ -208,20 +208,29 @@=0A=
  .Sh TECHNICAL DETAILS=0A=
  The=0A=
  .Nm=0A=
 -utility is fairly simple.  It extracts each package's "packing list"=0A=
 -into a special staging directory, parses it,=0A=
 -and then runs through the following sequence to fully extract the =
 contents:=0A=
 +utility extracts each package's "packing list" into a special staging =0A=
 +directory in /tmp (or $PKG_TMPDIR if set), parses it, and then runs =0A=
 +through the following sequence to fully extract the contents of the =
 package:=0A=
  .Bl -enum=0A=
  .It=0A=
 -Check if the package is already recorded as installed.  If so,=0A=
 -terminate installation.=0A=
 +A check is made to determine if the package is already recorded as =
 installed.=0A=
 +If it is, installation is terminated.=0A=
 +.It=0A=
 +A check is made to determine if the package conflicts (from=0A=
 +.Cm @pkgcfl=0A=
 +directives, see=0A=
 +.Xr pkg_create 1 )=0A=
 +with an already recorded as installed package. If it is,=0A=
 +installation is terminated.=0A=
  .It=0A=
  Scan all the package dependencies (from=0A=
  .Cm @pkgdep=0A=
  directives, see=0A=
  .Xr pkg_create 1 )=0A=
 -and make sure each one is met.  If not, try and find the missing=0A=
 -dependencies' packages and auto-install them; if they can't be found=0A=
 +are read from the packing list.=0A=
 +If any of these required packages is not currently installed,=0A=
 +an attempt is made to find and install it;=0A=
 +if the missing package cannot be found or installed,=0A=
  the installation is terminated.=0A=
  .It=0A=
  Search for any=0A=
 @@ -384,11 +393,14 @@=0A=
  consists of a directory name.=0A=
  The current directory may be indicated=0A=
  implicitly by an empty directory name, or explicitly by a single=0A=
 -period.=0A=
 +period. It is usually set to=0A=
 +.Pa /usr/ports/packages/All .=0A=
  .Pp=0A=
  The environment variable=0A=
  .Ev PKG_DBDIR=0A=
 -specifies an alternative location for the installed package database.=0A=
 +specifies an alternative location for the installed package database,=0A=
 +default location is=0A=
 +.Pa /var/db/pkg .=0A=
  .Pp=0A=
  The environment variables=0A=
  .Ev PKG_TMPDIR=0A=
 diff -ruN /tmp/current/src/usr.sbin/pkg_install/create/create.h =
 pkg_install/create/create.h=0A=
 --- /tmp/current/src/usr.sbin/pkg_install/create/create.h	Sun Apr 21 =
 01:20:58 2002=0A=
 +++ pkg_install/create/create.h	Sat Nov 30 16:00:28 2002=0A=
 @@ -37,6 +37,7 @@=0A=
  extern char	*ExcludeFrom;=0A=
  extern char	*Mtree;=0A=
  extern char	*Pkgdeps;=0A=
 +extern char	*Pkgcfl;=0A=
  extern char	*Origin;=0A=
  extern char	*InstalledPkg;=0A=
  extern char	PlayPen[];=0A=
 diff -ruN /tmp/current/src/usr.sbin/pkg_install/create/main.c =
 pkg_install/create/main.c=0A=
 --- /tmp/current/src/usr.sbin/pkg_install/create/main.c	Sun Apr 21 =
 01:20:58 2002=0A=
 +++ pkg_install/create/main.c	Sat Nov 30 15:59:59 2002=0A=
 @@ -16,7 +16,7 @@=0A=
  #include "lib.h"=0A=
  #include "create.h"=0A=
  =0A=
 -static char Options[] =3D "YNOhjvyzf:p:P:c:d:i:I:k:K:r:t:X:D:m:s:o:b:";=0A=
 +static char Options[] =3D =
 "YNOhjvyzf:p:P:C:c:d:i:I:k:K:r:t:X:D:m:s:o:b:";=0A=
  =0A=
  char	*Prefix		=3D NULL;=0A=
  char	*Comment        =3D NULL;=0A=
 @@ -32,6 +32,7 @@=0A=
  char	*ExcludeFrom	=3D NULL;=0A=
  char	*Mtree		=3D NULL;=0A=
  char	*Pkgdeps	=3D NULL;=0A=
 +char    *Pkgcfl         =3D NULL;=0A=
  char	*Origin		=3D NULL;=0A=
  char	*InstalledPkg	=3D NULL;=0A=
  char	PlayPen[FILENAME_MAX];=0A=
 @@ -78,6 +79,10 @@=0A=
  	    Contents =3D optarg;=0A=
  	    break;=0A=
  =0A=
 +	case 'C':=0A=
 +	    Pkgcfl =3D optarg;=0A=
 +	    break;=0A=
 +=0A=
  	case 'c':=0A=
  	    Comment =3D optarg;=0A=
  	    break;=0A=
 @@ -195,11 +200,11 @@=0A=
  usage()=0A=
  {=0A=
      fprintf(stderr, "%s\n%s\n%s\n%s\n%s\n%s\n",=0A=
 -"usage: pkg_create [-YNOhvy] [-P pkgs] [-p prefix] [-f contents] [-i =
 iscript]",=0A=
 -"                  [-I piscript] [-k dscript] [-K pdscript] [-r =
 rscript] ",=0A=
 -"                  [-t template] [-X excludefile] [-D displayfile] ",=0A=
 -"                  [-m mtreefile] [-o origin] -c comment -d description =
 ",=0A=
 -"                  -f packlist pkg-filename",=0A=
 +"usage: pkg_create [-YNOhvy] [-P pkgs] [-C cpkgs] [-p prefix] [-f =
 contents] ",=0A=
 +"                  [-i iscript] [-I piscript] [-k dscript] [-K =
 pdscript] ",=0A=
 +"                  [-r rscript] [-t template] [-X excludefile] ",=0A=
 +"                  [-D displayfile] [-m mtreefile] [-o origin] ",=0A=
 +"                  -c comment -d description -f packlist pkg-filename",=0A=
  "       pkg_create [-YNhvy] -b pkg-name [pkg-filename]");=0A=
      exit(1);=0A=
  }=0A=
 diff -ruN /tmp/current/src/usr.sbin/pkg_install/create/perform.c =
 pkg_install/create/perform.c=0A=
 --- /tmp/current/src/usr.sbin/pkg_install/create/perform.c	Sun Aug 25 =
 05:01:08 2002=0A=
 +++ pkg_install/create/perform.c	Sat Nov 30 16:06:00 2002=0A=
 @@ -145,6 +145,22 @@=0A=
  	    printf(".\n");=0A=
      }=0A=
  =0A=
 +    /* Put the conflicts directly after the dependencies, if any */=0A=
 +    if (Pkgcfl) {=0A=
 +	if (Verbose && !PlistOnly)=0A=
 +	    printf("Registering conflicts:");=0A=
 +	while (Pkgcfl) {=0A=
 +	   cp =3D strsep(&Pkgcfl, " \t\n");=0A=
 +	   if (*cp) {=0A=
 +		add_plist(&plist, PLIST_PKGCFL, cp);=0A=
 +		if (Verbose && !PlistOnly)=0A=
 +		    printf(" %s", cp);=0A=
 +	   }=0A=
 +	}=0A=
 +	if (Verbose && !PlistOnly)=0A=
 +	    printf(".\n");=0A=
 +    }=0A=
 +=0A=
      /* If a SrcDir override is set, add it now */=0A=
      if (SrcDir) {=0A=
  	if (Verbose && !PlistOnly)=0A=
 diff -ruN /tmp/current/src/usr.sbin/pkg_install/create/pkg_create.1 =
 pkg_install/create/pkg_create.1=0A=
 --- /tmp/current/src/usr.sbin/pkg_install/create/pkg_create.1	Mon Aug  5 =
 01:20:09 2002=0A=
 +++ pkg_install/create/pkg_create.1	Sun Dec  1 21:46:53 2002=0A=
 @@ -32,6 +32,7 @@=0A=
  .Sh SYNOPSIS=0A=
  .Nm=0A=
  .Op Fl YNOhjvyz=0A=
 +.Op Fl C Ar cpkgs=0A=
  .Op Fl P Ar pkgs=0A=
  .Op Fl p Ar prefix=0A=
  .Op Fl f Ar contents=0A=
 @@ -142,6 +143,13 @@=0A=
  when the package is later installed.=0A=
  It will be passed the package's name as=0A=
  the first argument.=0A=
 +.It Fl C Ar cpkgs=0A=
 +Set the initial package conflict list to=0A=
 +.Ar cpkgs .=0A=
 +This is assumed to be a whitespace separated list of package names=0A=
 +and is meant as a convenient shorthand for specifying multiple=0A=
 +.Cm @pkgcfl=0A=
 +directives in the packing list (see PACKING LIST DETAILS section below).=0A=
  .It Fl P Ar pkgs=0A=
  Set the initial package dependency list to=0A=
  .Ar pkgs .=0A=
 @@ -482,6 +490,11 @@=0A=
  package is deinstalled.  Multiple=0A=
  .Cm @pkgdep=0A=
  directives may be used if the package depends on multiple other =
 packages.=0A=
 +.It Cm @pkgcfl Ar pkgcflname=0A=
 +Declare a conflict with the=0A=
 +.Ar pkgcflname=0A=
 +package, as the two packages contain references to the same files,=0A=
 +and so cannot co-exist on the same system.=0A=
  .El=0A=
  .Sh ENVIRONMENT=0A=
  The environment variable=0A=
 diff -ruN /tmp/current/src/usr.sbin/pkg_install/info/show.c =
 pkg_install/info/show.c=0A=
 --- /tmp/current/src/usr.sbin/pkg_install/info/show.c	Thu Oct 24 =
 21:27:32 2002=0A=
 +++ pkg_install/info/show.c	Sat Nov 30 18:17:53 2002=0A=
 @@ -158,6 +158,10 @@=0A=
  		"\tdependency origin: %s\n", p->name);=0A=
  	    break;=0A=
  =0A=
 +	case PLIST_PKGCFL:=0A=
 +	    printf(Quiet ? "@pkgcfl %s\n" : "Conflicts: %s\n", p->name);=0A=
 +	    break;=0A=
 +=0A=
  	case PLIST_MTREE:=0A=
  	    printf(Quiet ? "@mtree %s\n" : "\tPackage mtree file: %s\n", =
 p->name);=0A=
  	    break;=0A=
 diff -ruN /tmp/current/src/usr.sbin/pkg_install/lib/lib.h =
 pkg_install/lib/lib.h=0A=
 --- /tmp/current/src/usr.sbin/pkg_install/lib/lib.h	Mon Sep  9 23:43:30 =
 2002=0A=
 +++ pkg_install/lib/lib.h	Sun Dec  1 01:12:22 2002=0A=
 @@ -86,7 +86,7 @@=0A=
   * Version of the package tools - increase only when some=0A=
   * functionality used by bsd.port.mk is changed, added or removed=0A=
   */=0A=
 -#define PKG_INSTALL_VERSION	20020908=0A=
 +#define PKG_INSTALL_VERSION	20021201=0A=
  =0A=
  #define PKG_WRAPCONF_FNAME	"/var/db/pkg_install.conf"=0A=
  #define main(argc, argv)	real_main(argc, argv)=0A=
 @@ -99,8 +99,8 @@=0A=
      PLIST_FILE, PLIST_CWD, PLIST_CMD, PLIST_CHMOD,=0A=
      PLIST_CHOWN, PLIST_CHGRP, PLIST_COMMENT, PLIST_IGNORE,=0A=
      PLIST_NAME, PLIST_UNEXEC, PLIST_SRC, PLIST_DISPLAY,=0A=
 -    PLIST_PKGDEP, PLIST_MTREE, PLIST_DIR_RM, PLIST_IGNORE_INST,=0A=
 -    PLIST_OPTION, PLIST_ORIGIN, PLIST_DEPORIGIN=0A=
 +    PLIST_PKGDEP, PLIST_PKGCFL, PLIST_MTREE, PLIST_DIR_RM, =0A=
 +    PLIST_IGNORE_INST, PLIST_OPTION, PLIST_ORIGIN, PLIST_DEPORIGIN=0A=
  };=0A=
  typedef enum _plist_t plist_t;=0A=
  =0A=
 diff -ruN /tmp/current/src/usr.sbin/pkg_install/lib/plist.c =
 pkg_install/lib/plist.c=0A=
 --- /tmp/current/src/usr.sbin/pkg_install/lib/plist.c	Sun Sep  1 =
 00:21:47 2002=0A=
 +++ pkg_install/lib/plist.c	Sat Nov 30 18:14:57 2002=0A=
 @@ -241,6 +241,8 @@=0A=
  	return PLIST_DISPLAY;=0A=
      else if (!strcmp(cmd, "pkgdep"))=0A=
  	return PLIST_PKGDEP;=0A=
 +    else if (!strcmp(cmd, "pkgcfl"))=0A=
 +	return PLIST_PKGCFL;=0A=
      else if (!strcmp(cmd, "mtree"))=0A=
  	return PLIST_MTREE;=0A=
      else if (!strcmp(cmd, "dirrm"))=0A=
 @@ -362,6 +364,10 @@=0A=
  =0A=
  	case PLIST_PKGDEP:=0A=
  	    fprintf(fp, "%cpkgdep %s\n", CMD_CHAR, plist->name);=0A=
 +	    break;=0A=
 +=0A=
 +	case PLIST_PKGCFL:=0A=
 +	    fprintf(fp, "%cpkgcfl %s\n", CMD_CHAR, plist->name);=0A=
  	    break;=0A=
  =0A=
  	case PLIST_MTREE:=0A=
 
 ------=_NextPart_000_0007_01C29992.CFDB0EB0--
 

From: Sergey Matveychuk <sem@ciam.ru>
To: freebsd-gnats-submit@FreeBSD.org
Cc:  
Subject: Re: bin/13649: Enhancement to PKG_INSTALL tools (4.0-CURRENT)
Date: Thu, 05 Dec 2002 05:00:42 +0300

 This is a multi-part message in MIME format.
 --------------000508070605020108010001
 Content-Type: text/plain; charset=us-ascii; format=flowed
 Content-Transfer-Encoding: 7bit
 
 Send again my patch with Mozilla because of stupid =0A= symbols of M$ 
 Outlook
 
 --------------000508070605020108010001
 Content-Type: text/plain;
  name="pkg_install.patch"
 Content-Transfer-Encoding: 7bit
 Content-Disposition: inline;
  filename="pkg_install.patch"
 
 diff -ruN /tmp/current/src/usr.sbin/pkg_install/add/perform.c pkg_install/add/perform.c
 --- /tmp/current/src/usr.sbin/pkg_install/add/perform.c	Tue Sep  3 10:59:33 2002
 +++ pkg_install/add/perform.c	Sun Dec  1 21:29:21 2002
 @@ -77,6 +77,7 @@
      char pre_script[FILENAME_MAX] = INSTALL_FNAME;
      char post_script[FILENAME_MAX];
      char pre_arg[FILENAME_MAX], post_arg[FILENAME_MAX];
 +    int conflictsfound=0;
  
      code = 0;
      zapLogDir = 0;
 @@ -246,6 +247,36 @@
  	      Plist.name);
  	code = 1;
  	goto success;	/* close enough for government work */
 +    }
 +
 +    /* Now check the packing list for conflicts */
 +    for (p = Plist.head; p ; p = p->next) {
 +	if (p->type == PLIST_PKGCFL) {
 +	    char *conflict[2];
 +	    char **matched;
 +	    int i,errcode;
 +
 +	    conflict[0]=strdup(p->name);
 +	    conflict[1]=NULL;
 +	    matched = matchinstalled(MATCH_GLOB,conflict,&errcode);
 +	    if(errcode == 0 && matched != NULL)
 +		for(i=0; matched[i] != NULL; i++)
 +		    if(isinstalledpkg(matched[i])) {
 +			warnx("Package '%s' conflicts with %s", Plist.name,
 +								matched[i]);
 +			conflictsfound=1;
 +		    }
 +
 +	    continue;
 +	}
 +    }
 +    if(conflictsfound) {
 +	if(!Force) {
 +	    warnx("please use pkg_delete first to remove it (them)");
 +	    code = 1;
 +	    goto bomb;
 +	} else
 +	    warnx("proceeding anyway");
      }
  
      /* Now check the packing list for dependencies */
 diff -ruN /tmp/current/src/usr.sbin/pkg_install/add/pkg_add.1 pkg_install/add/pkg_add.1
 --- /tmp/current/src/usr.sbin/pkg_install/add/pkg_add.1	Tue Sep 10 06:42:59 2002
 +++ pkg_install/add/pkg_add.1	Sun Dec  1 22:08:59 2002
 @@ -208,20 +208,29 @@
  .Sh TECHNICAL DETAILS
  The
  .Nm
 -utility is fairly simple.  It extracts each package's "packing list"
 -into a special staging directory, parses it,
 -and then runs through the following sequence to fully extract the contents:
 +utility extracts each package's "packing list" into a special staging 
 +directory in /tmp (or $PKG_TMPDIR if set), parses it, and then runs 
 +through the following sequence to fully extract the contents of the package:
  .Bl -enum
  .It
 -Check if the package is already recorded as installed.  If so,
 -terminate installation.
 +A check is made to determine if the package is already recorded as installed.
 +If it is, installation is terminated.
 +.It
 +A check is made to determine if the package conflicts (from
 +.Cm @pkgcfl
 +directives, see
 +.Xr pkg_create 1 )
 +with an already recorded as installed package. If it is,
 +installation is terminated.
  .It
  Scan all the package dependencies (from
  .Cm @pkgdep
  directives, see
  .Xr pkg_create 1 )
 -and make sure each one is met.  If not, try and find the missing
 -dependencies' packages and auto-install them; if they can't be found
 +are read from the packing list.
 +If any of these required packages is not currently installed,
 +an attempt is made to find and install it;
 +if the missing package cannot be found or installed,
  the installation is terminated.
  .It
  Search for any
 @@ -384,11 +393,14 @@
  consists of a directory name.
  The current directory may be indicated
  implicitly by an empty directory name, or explicitly by a single
 -period.
 +period. It is usually set to
 +.Pa /usr/ports/packages/All .
  .Pp
  The environment variable
  .Ev PKG_DBDIR
 -specifies an alternative location for the installed package database.
 +specifies an alternative location for the installed package database,
 +default location is
 +.Pa /var/db/pkg .
  .Pp
  The environment variables
  .Ev PKG_TMPDIR
 diff -ruN /tmp/current/src/usr.sbin/pkg_install/create/create.h pkg_install/create/create.h
 --- /tmp/current/src/usr.sbin/pkg_install/create/create.h	Sun Apr 21 01:20:58 2002
 +++ pkg_install/create/create.h	Sat Nov 30 16:00:28 2002
 @@ -37,6 +37,7 @@
  extern char	*ExcludeFrom;
  extern char	*Mtree;
  extern char	*Pkgdeps;
 +extern char	*Pkgcfl;
  extern char	*Origin;
  extern char	*InstalledPkg;
  extern char	PlayPen[];
 diff -ruN /tmp/current/src/usr.sbin/pkg_install/create/main.c pkg_install/create/main.c
 --- /tmp/current/src/usr.sbin/pkg_install/create/main.c	Sun Apr 21 01:20:58 2002
 +++ pkg_install/create/main.c	Sat Nov 30 15:59:59 2002
 @@ -16,7 +16,7 @@
  #include "lib.h"
  #include "create.h"
  
 -static char Options[] = "YNOhjvyzf:p:P:c:d:i:I:k:K:r:t:X:D:m:s:o:b:";
 +static char Options[] = "YNOhjvyzf:p:P:C:c:d:i:I:k:K:r:t:X:D:m:s:o:b:";
  
  char	*Prefix		= NULL;
  char	*Comment        = NULL;
 @@ -32,6 +32,7 @@
  char	*ExcludeFrom	= NULL;
  char	*Mtree		= NULL;
  char	*Pkgdeps	= NULL;
 +char    *Pkgcfl         = NULL;
  char	*Origin		= NULL;
  char	*InstalledPkg	= NULL;
  char	PlayPen[FILENAME_MAX];
 @@ -78,6 +79,10 @@
  	    Contents = optarg;
  	    break;
  
 +	case 'C':
 +	    Pkgcfl = optarg;
 +	    break;
 +
  	case 'c':
  	    Comment = optarg;
  	    break;
 @@ -195,11 +200,11 @@
  usage()
  {
      fprintf(stderr, "%s\n%s\n%s\n%s\n%s\n%s\n",
 -"usage: pkg_create [-YNOhvy] [-P pkgs] [-p prefix] [-f contents] [-i iscript]",
 -"                  [-I piscript] [-k dscript] [-K pdscript] [-r rscript] ",
 -"                  [-t template] [-X excludefile] [-D displayfile] ",
 -"                  [-m mtreefile] [-o origin] -c comment -d description ",
 -"                  -f packlist pkg-filename",
 +"usage: pkg_create [-YNOhvy] [-P pkgs] [-C cpkgs] [-p prefix] [-f contents] ",
 +"                  [-i iscript] [-I piscript] [-k dscript] [-K pdscript] ",
 +"                  [-r rscript] [-t template] [-X excludefile] ",
 +"                  [-D displayfile] [-m mtreefile] [-o origin] ",
 +"                  -c comment -d description -f packlist pkg-filename",
  "       pkg_create [-YNhvy] -b pkg-name [pkg-filename]");
      exit(1);
  }
 diff -ruN /tmp/current/src/usr.sbin/pkg_install/create/perform.c pkg_install/create/perform.c
 --- /tmp/current/src/usr.sbin/pkg_install/create/perform.c	Sun Aug 25 05:01:08 2002
 +++ pkg_install/create/perform.c	Sat Nov 30 16:06:00 2002
 @@ -145,6 +145,22 @@
  	    printf(".\n");
      }
  
 +    /* Put the conflicts directly after the dependencies, if any */
 +    if (Pkgcfl) {
 +	if (Verbose && !PlistOnly)
 +	    printf("Registering conflicts:");
 +	while (Pkgcfl) {
 +	   cp = strsep(&Pkgcfl, " \t\n");
 +	   if (*cp) {
 +		add_plist(&plist, PLIST_PKGCFL, cp);
 +		if (Verbose && !PlistOnly)
 +		    printf(" %s", cp);
 +	   }
 +	}
 +	if (Verbose && !PlistOnly)
 +	    printf(".\n");
 +    }
 +
      /* If a SrcDir override is set, add it now */
      if (SrcDir) {
  	if (Verbose && !PlistOnly)
 diff -ruN /tmp/current/src/usr.sbin/pkg_install/create/pkg_create.1 pkg_install/create/pkg_create.1
 --- /tmp/current/src/usr.sbin/pkg_install/create/pkg_create.1	Mon Aug  5 01:20:09 2002
 +++ pkg_install/create/pkg_create.1	Sun Dec  1 21:46:53 2002
 @@ -32,6 +32,7 @@
  .Sh SYNOPSIS
  .Nm
  .Op Fl YNOhjvyz
 +.Op Fl C Ar cpkgs
  .Op Fl P Ar pkgs
  .Op Fl p Ar prefix
  .Op Fl f Ar contents
 @@ -142,6 +143,13 @@
  when the package is later installed.
  It will be passed the package's name as
  the first argument.
 +.It Fl C Ar cpkgs
 +Set the initial package conflict list to
 +.Ar cpkgs .
 +This is assumed to be a whitespace separated list of package names
 +and is meant as a convenient shorthand for specifying multiple
 +.Cm @pkgcfl
 +directives in the packing list (see PACKING LIST DETAILS section below).
  .It Fl P Ar pkgs
  Set the initial package dependency list to
  .Ar pkgs .
 @@ -482,6 +490,11 @@
  package is deinstalled.  Multiple
  .Cm @pkgdep
  directives may be used if the package depends on multiple other packages.
 +.It Cm @pkgcfl Ar pkgcflname
 +Declare a conflict with the
 +.Ar pkgcflname
 +package, as the two packages contain references to the same files,
 +and so cannot co-exist on the same system.
  .El
  .Sh ENVIRONMENT
  The environment variable
 diff -ruN /tmp/current/src/usr.sbin/pkg_install/info/show.c pkg_install/info/show.c
 --- /tmp/current/src/usr.sbin/pkg_install/info/show.c	Thu Oct 24 21:27:32 2002
 +++ pkg_install/info/show.c	Sat Nov 30 18:17:53 2002
 @@ -158,6 +158,10 @@
  		"\tdependency origin: %s\n", p->name);
  	    break;
  
 +	case PLIST_PKGCFL:
 +	    printf(Quiet ? "@pkgcfl %s\n" : "Conflicts: %s\n", p->name);
 +	    break;
 +
  	case PLIST_MTREE:
  	    printf(Quiet ? "@mtree %s\n" : "\tPackage mtree file: %s\n", p->name);
  	    break;
 diff -ruN /tmp/current/src/usr.sbin/pkg_install/lib/lib.h pkg_install/lib/lib.h
 --- /tmp/current/src/usr.sbin/pkg_install/lib/lib.h	Mon Sep  9 23:43:30 2002
 +++ pkg_install/lib/lib.h	Sun Dec  1 01:12:22 2002
 @@ -86,7 +86,7 @@
   * Version of the package tools - increase only when some
   * functionality used by bsd.port.mk is changed, added or removed
   */
 -#define PKG_INSTALL_VERSION	20020908
 +#define PKG_INSTALL_VERSION	20021201
  
  #define PKG_WRAPCONF_FNAME	"/var/db/pkg_install.conf"
  #define main(argc, argv)	real_main(argc, argv)
 @@ -99,8 +99,8 @@
      PLIST_FILE, PLIST_CWD, PLIST_CMD, PLIST_CHMOD,
      PLIST_CHOWN, PLIST_CHGRP, PLIST_COMMENT, PLIST_IGNORE,
      PLIST_NAME, PLIST_UNEXEC, PLIST_SRC, PLIST_DISPLAY,
 -    PLIST_PKGDEP, PLIST_MTREE, PLIST_DIR_RM, PLIST_IGNORE_INST,
 -    PLIST_OPTION, PLIST_ORIGIN, PLIST_DEPORIGIN
 +    PLIST_PKGDEP, PLIST_PKGCFL, PLIST_MTREE, PLIST_DIR_RM, 
 +    PLIST_IGNORE_INST, PLIST_OPTION, PLIST_ORIGIN, PLIST_DEPORIGIN
  };
  typedef enum _plist_t plist_t;
  
 diff -ruN /tmp/current/src/usr.sbin/pkg_install/lib/plist.c pkg_install/lib/plist.c
 --- /tmp/current/src/usr.sbin/pkg_install/lib/plist.c	Sun Sep  1 00:21:47 2002
 +++ pkg_install/lib/plist.c	Sat Nov 30 18:14:57 2002
 @@ -241,6 +241,8 @@
  	return PLIST_DISPLAY;
      else if (!strcmp(cmd, "pkgdep"))
  	return PLIST_PKGDEP;
 +    else if (!strcmp(cmd, "pkgcfl"))
 +	return PLIST_PKGCFL;
      else if (!strcmp(cmd, "mtree"))
  	return PLIST_MTREE;
      else if (!strcmp(cmd, "dirrm"))
 @@ -362,6 +364,10 @@
  
  	case PLIST_PKGDEP:
  	    fprintf(fp, "%cpkgdep %s\n", CMD_CHAR, plist->name);
 +	    break;
 +
 +	case PLIST_PKGCFL:
 +	    fprintf(fp, "%cpkgcfl %s\n", CMD_CHAR, plist->name);
  	    break;
  
  	case PLIST_MTREE:
 
 --------------000508070605020108010001--
 

From: "Sergey Matveychuk" <sem@ciam.ru>
To: <freebsd-gnats-submit@FreeBSD.org>, <hetzels@westbend.net>
Cc:  
Subject: Re: bin/13649: Enhancement to PKG_INSTALL tools (4.0-CURRENT)
Date: Thu, 16 Jan 2003 19:22:32 +0300

 is obsoleted by bin/47175
 

From: "Sergey Matveychuk" <sem@ciam.ru>
To: <freebsd-gnats-submit@FreeBSD.org>, <hetzels@westbend.net>
Cc:  
Subject: Re: bin/13649: Enhancement to PKG_INSTALL tools (4.0-CURRENT)
Date: Thu, 16 Jan 2003 19:44:03 +0300

 sorry, obsoleted by bin/47145
 
State-Changed-From-To: open->closed 
State-Changed-By: lioux 
State-Changed-When: Fri Jan 31 09:45:37 PST 2003 
State-Changed-Why:  
Superseded by PR 47145, thanks! 

http://www.freebsd.org/cgi/query-pr.cgi?pr=13649 
>Unformatted:
