Bug 36606

Summary: Adding packages with sysinstall failes after
Product: Base System Reporter: Mark Fullmer <maf>
Component: confAssignee: Murray Stokely <murray>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: 4.5-STABLE   
Hardware: Any   
OS: Any   

Description Mark Fullmer 2002-04-01 06:40:01 UTC
pkg_add fails when the package is delivered via stdin (pkg_add -).  This
appears to have been triggered by gnu/30876, but the problem seems to
be in pkg_add itself.  sysinstall can no longer install packages.

How-To-Repeat: Before the buffer.c patch to tar in gnu/30876:
char:/tmp# pkg_add - < zoo-2.10.1.tgz   

gzip: stdin: unexpected end of file
tar: child returned status 1
The package is successfully installed though.

After the buffer.c patch:

char:/tmp# pkg_add - < zoo-2.10.1.tgz   

gzip: stdin: unexpected end of file
tar: child returned status 1
pkg_add: tar extract of - failed!
pkg_add: unable to extract `-'!
Comment 1 Murray Stokely freebsd_committer freebsd_triage 2002-04-02 13:29:24 UTC
State Changed
From-To: open->analyzed

David O'Brien and I spent time analyzing this.  I have a fix that I 
will commit to -CURRENT momentarily. 



Comment 2 Murray Stokely freebsd_committer freebsd_triage 2002-04-02 13:29:24 UTC
Responsible Changed
From-To: freebsd-bugs->murray

David O'Brien and I spent time analyzing this.  I have a fix that I 
will commit to -CURRENT momentarily.
Comment 3 Murray Stokely freebsd_committer freebsd_triage 2002-04-02 13:53:31 UTC
  Attached is a patch against -STABLE.  Can you please confirm that
this solves the problems you are experiencing?  The has already been
applied to -CURRENT.

Index: perform.c
===================================================================
RCS file: /a/ncvs/src/usr.sbin/pkg_install/add/perform.c,v
retrieving revision 1.57.2.8
diff -u -r1.57.2.8 perform.c
--- perform.c	23 Oct 2001 09:16:03 -0000	1.57.2.8
+++ perform.c	2 Apr 2002 11:51:13 -0000
@@ -189,7 +189,7 @@
 	     * compress an average of 75%, so multiply by 4 for good measure.
 	     */
 
-	    if (!inPlace && min_free(playpen) < sb.st_size * 4) {
+	    if (!extract && !inPlace && min_free(playpen) < sb.st_size * 4) {
 		warnx("projected size of %qd exceeds available free space.\n"
 "Please set your PKG_TMPDIR variable to point to a location with more\n"
 		       "free space and try again", (long long)sb.st_size * 4);
@@ -202,8 +202,9 @@
 	    if (inPlace && Fake)
 		goto success;
 
-	    /* Finally unpack the whole mess */
-	    if (unpack(pkg_fullname, NULL)) {
+	    /* Finally unpack the whole mess.  If extract is null we
+	       already + did so so don't bother doing it again. */
+	    if (extract && unpack(pkg_fullname, NULL)) {
 		warnx("unable to extract `%s'!", pkg_fullname);
 		goto bomb;
 	    }




On Tue, Apr 02, 2002 at 04:29:58AM -0800, murray@FreeBSD.org wrote:
> Synopsis: Adding packages with sysinstall failes after
> 
> State-Changed-From-To: open->analyzed
> State-Changed-By: murray
> State-Changed-When: Tue Apr 2 04:29:24 PST 2002
> State-Changed-Why: 
> David O'Brien and I spent time analyzing this.  I have a fix that I
> will commit to -CURRENT momentarily.
> 
> 
> 
> Responsible-Changed-From-To: freebsd-bugs->murray
> Responsible-Changed-By: murray
> Responsible-Changed-When: Tue Apr 2 04:29:24 PST 2002
> Responsible-Changed-Why: 
> David O'Brien and I spent time analyzing this.  I have a fix that I
> will commit to -CURRENT momentarily.
> 
> 
> http://www.freebsd.org/cgi/query-pr.cgi?pr=36606
> 
> To Unsubscribe: send mail to majordomo@FreeBSD.org
> with "unsubscribe freebsd-bugs" in the body of the message
Comment 4 Murray Stokely freebsd_committer freebsd_triage 2002-04-14 14:16:21 UTC
State Changed
From-To: analyzed->closed

This has been fixed in both -CURRENT and -STABLE, FreeBSD 4.6 will not 
have this problem.  Thanks for the submission!