Bug 27495

Summary: ports tree broken while made cvsup upgrade
Product: Base System Reporter: Sergey N. Voronkov <snvoronkov>
Component: miscAssignee: John Polstra <jdp>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: 4.3-RELEASE   
Hardware: Any   
OS: Any   

Description Sergey N. Voronkov 2001-05-21 11:30:03 UTC

Fix: 

Directly CVS tree update need... Please help...
How-To-Repeat: 
#cvsup -g -L 2 -p m cvsup.<country code>.freebsd.org
[...]
Server software version: REL_16_1
Negotiating file attribute support
Exchanging collection information
Establishing multiplexed-mode data connection
Running
Updating collection ports-all/cvs
 Delete ports/www/jakarta-tomcat/files
Updater failed: Cannot delete "/usr/ports/www/jakarta-tomcat/files":
Directory not empty
Comment 1 Peter Pentchev 2001-05-21 11:43:26 UTC
On Mon, May 21, 2001 at 04:24:41PM +0600, serg@tmn.ru wrote:
> 
> >Number:         27495
> >Category:       misc
> >Synopsis:       ports tree broken while made cvsup upgrade
> >Responsible:    freebsd-bugs
> >Originator:     Sergey N. Voronkov
> >Release:        FreeBSD 4.3-RELEASE i386
> >Organization:
> Sibitex
> >Environment:
> System: FreeBSD sv.tech.sibitex.tmn.ru 4.3-RELEASE FreeBSD 4.3-RELEASE #14: Mon Apr 23 13:05:46 YEKST 2001 serg@sv.tech.sibitex.tmn.ru:/usr/obj/usr/src/sys/SV i386
> 
> >Description:
> >How-To-Repeat:
> 
> #cvsup -g -L 2 -p m cvsup.<country code>.freebsd.org
> [...]
> Server software version: REL_16_1
> Negotiating file attribute support
> Exchanging collection information
> Establishing multiplexed-mode data connection
> Running
> Updating collection ports-all/cvs
>  Delete ports/www/jakarta-tomcat/files
> Updater failed: Cannot delete "/usr/ports/www/jakarta-tomcat/files":
> Directory not empty
> 
> >Fix:
> 
> Directly CVS tree update need... Please help...

What files do you have in /usr/ports/www/jakarta-tomcat/files/ ?

G'luck,
Peter

-- 
I had to translate this sentence into English because I could not read the original Sanskrit.
Comment 2 Sergey N. Voronkov 2001-05-21 12:02:39 UTC
On Mon, May 21, 2001 at 01:43:26PM +0300, Peter Pentchev wrote:
> On Mon, May 21, 2001 at 04:24:41PM +0600, serg@tmn.ru wrote:
> > 
> > >Number:         27495
> > >Category:       misc
> > >Synopsis:       ports tree broken while made cvsup upgrade
> > >Responsible:    freebsd-bugs
> > >Originator:     Sergey N. Voronkov
> > >Release:        FreeBSD 4.3-RELEASE i386
> > >Organization:
> > Sibitex
> > >Environment:
> > System: FreeBSD sv.tech.sibitex.tmn.ru 4.3-RELEASE FreeBSD 4.3-RELEASE #14: Mon Apr 23 13:05:46 YEKST 2001 serg@sv.tech.sibitex.tmn.ru:/usr/obj/usr/src/sys/SV i386
> > 
> > >Description:
> > >How-To-Repeat:
> > 
> > #cvsup -g -L 2 -p m cvsup.<country code>.freebsd.org
> > [...]
> > Server software version: REL_16_1
> > Negotiating file attribute support
> > Exchanging collection information
> > Establishing multiplexed-mode data connection
> > Running
> > Updating collection ports-all/cvs
> >  Delete ports/www/jakarta-tomcat/files
> > Updater failed: Cannot delete "/usr/ports/www/jakarta-tomcat/files":
> > Directory not empty
> > 
> > >Fix:
> > 
> > Directly CVS tree update need... Please help...
> 
> What files do you have in /usr/ports/www/jakarta-tomcat/files/ ?
> 

Here are ports/www/jakarta-tomcat/files brokenes related commits:

eivind      2000/12/15 04:35:53 PST

  Removed files:
    www/jakarta-tomcat   files
  Log:
  Remove erroneous commit of the file "files".
    
  OKed by: maintainer (DES)    

dirk        2001/05/20 09:07:16 PDT

  ports/www/jakarta-tomcat/files - New directory
  
dirk        2001/05/20 09:08:16 PDT
                                 
  Added files:
    www/jakarta-tomcat/files patch-aa
  Log:
  Give jakarta-tomcat a chance of working with mod_jk.

dirk        2001/05/21 01:05:38 PDT
      
  Modified files:
    www/jakarta-tomcat   Makefile pkg-plist
  Added files:
    www/jakarta-tomcat/files patch-ab tomcat.sh
  Log:
  - provide startup script
  - log tomcat messages to a file (logs/tomcat.log)
  - fix plist
  
  Revision  Changes    Path
  1.7       +8 -3      ports/www/jakarta-tomcat/Makefile
  1.4       +2 -3      ports/www/jakarta-tomcat/pkg-plist

So $(cvsup_basedir)/cvs/ports-all/checkouts.cvs:. contains information about
deleted ports/www/jakarta-tomcat/files, but directory MUST exist and
containts useful files! This situation can be fixed onto every cvsuping 
machine by removing checkouts and running cvsup again.

I don't know how to fix this... May be we should post HEADS UP to ports and
stable lists?

Serg.
Comment 3 Peter Pentchev 2001-05-21 13:30:21 UTC
On Mon, May 21, 2001 at 04:10:06AM -0700, Sergey N. Voronkov wrote:
> The following reply was made to PR misc/27495; it has been noted by GNATS.
> 
> From: "Sergey N. Voronkov" <serg@tmn.ru>
> To: Peter Pentchev <roam@orbitel.bg>
> Cc: FreeBSD-gnats-submit@freebsd.org
> Subject: Re: misc/27495: CVS tree broken
> Date: Mon, 21 May 2001 17:02:39 +0600
> 
>  On Mon, May 21, 2001 at 01:43:26PM +0300, Peter Pentchev wrote:
>  > On Mon, May 21, 2001 at 04:24:41PM +0600, serg@tmn.ru wrote:
>  > > 
>  > > >Number:         27495
>  > > >Category:       misc
>  > > >Synopsis:       ports tree broken while made cvsup upgrade
>  > > >Responsible:    freebsd-bugs
>  > > >Originator:     Sergey N. Voronkov
>  > > >Release:        FreeBSD 4.3-RELEASE i386
>  > > >Organization:
>  > > Sibitex
>  > > >Environment:
>  > > System: FreeBSD sv.tech.sibitex.tmn.ru 4.3-RELEASE FreeBSD 4.3-RELEASE #14: Mon Apr 23 13:05:46 YEKST 2001 serg@sv.tech.sibitex.tmn.ru:/usr/obj/usr/src/sys/SV i386
>  > > 
>  > > >Description:
>  > > >How-To-Repeat:
>  > > 
>  > > #cvsup -g -L 2 -p m cvsup.<country code>.freebsd.org
>  > > [...]
>  > > Server software version: REL_16_1
>  > > Negotiating file attribute support
>  > > Exchanging collection information
>  > > Establishing multiplexed-mode data connection
>  > > Running
>  > > Updating collection ports-all/cvs
>  > >  Delete ports/www/jakarta-tomcat/files
>  > > Updater failed: Cannot delete "/usr/ports/www/jakarta-tomcat/files":
>  > > Directory not empty
>  > > 
>  > > >Fix:
>  > > 
>  > > Directly CVS tree update need... Please help...
>  > 
>  > What files do you have in /usr/ports/www/jakarta-tomcat/files/ ?
>  > 
>  
>  Here are ports/www/jakarta-tomcat/files brokenes related commits:
>  
[snip excellent analysis]
>  
>  So $(cvsup_basedir)/cvs/ports-all/checkouts.cvs:. contains information about
>  deleted ports/www/jakarta-tomcat/files, but directory MUST exist and
>  containts useful files! This situation can be fixed onto every cvsuping 
>  machine by removing checkouts and running cvsup again.
>  
>  I don't know how to fix this... May be we should post HEADS UP to ports and
>  stable lists?

Problem reproduced here, the above analysis, involving a file named 'files'
and a subsequent 'files' directory creation seems correct.

Well, I guess a HEADS UP would be the best way to go.  The workaround
is to remove the jakarta-tomcat/files/ directory before the cvsup,
maybe touch a jakarta-tomcat/files file, and re-do the cvsup.

[2 minutes later]

Eep.  This workaround failed - files/patch-aa is created before files is
removed :(  OK, I'll try removing the checkouts file and see if this helps.

G'luck,
Peter

-- 
I am jealous of the first word in this sentence.
Comment 4 Peter Pentchev 2001-05-21 14:35:47 UTC
On Mon, May 21, 2001 at 05:40:03AM -0700, Peter Pentchev wrote:
> The following reply was made to PR misc/27495; it has been noted by GNATS.
[snip]
>  >  I don't know how to fix this... May be we should post HEADS UP to ports and
>  >  stable lists?
>  
>  Problem reproduced here, the above analysis, involving a file named 'files'
>  and a subsequent 'files' directory creation seems correct.
>  
>  Well, I guess a HEADS UP would be the best way to go.  The workaround
>  is to remove the jakarta-tomcat/files/ directory before the cvsup,
>  maybe touch a jakarta-tomcat/files file, and re-do the cvsup.
>  
>  [2 minutes later]
>  
>  Eep.  This workaround failed - files/patch-aa is created before files is
>  removed :(  OK, I'll try removing the checkouts file and see if this helps.

Yes, removing the checkouts file worked.  Now it's just a matter of somebody
sending the HEADS UP to -ports (and maybe -stable? -current? cvs-all?)

G'luck,
Peter

-- 
Do you think anybody has ever had *precisely this thought* before?
Comment 5 Peter Pentchev 2001-05-21 16:59:49 UTC
On Mon, May 21, 2001 at 04:35:47PM +0300, Peter Pentchev wrote:
> >  
> >  Well, I guess a HEADS UP would be the best way to go.  The workaround
> >  is to remove the jakarta-tomcat/files/ directory before the cvsup,
> >  maybe touch a jakarta-tomcat/files file, and re-do the cvsup.
> >  
> >  [2 minutes later]
> >  
> >  Eep.  This workaround failed - files/patch-aa is created before files is
> >  removed :(  OK, I'll try removing the checkouts file and see if this helps.
> 
> Yes, removing the checkouts file worked.  Now it's just a matter of somebody
> sending the HEADS UP to -ports (and maybe -stable? -current? cvs-all?)

John D. Polstra just posted a message to -ports, suggesting removal
of the www/jakarta-tomcat/ directory.  I can confirm this works, and
thus, there is NO need to remove the checkouts file.

G'luck,
Peter

-- 
I am the meaning of this sentence.
Comment 6 Peter Pentchev freebsd_committer freebsd_triage 2001-05-21 17:11:49 UTC
Responsible Changed
From-To: freebsd-bugs->jdp

John D. Polstra is the author and maintainer of CVSup. 
He already suggested a workaround - remove the jakarta-tomcat directory. 
This maintainer change is more of a question - are there any plans 
to make further CVSup versions capable of handling such situations? 
The 16.1a version in net/cvsup-devel also fails.
Comment 7 John Polstra freebsd_committer freebsd_triage 2001-05-21 23:20:21 UTC
State Changed
From-To: open->analyzed

This was caused by the combination of a problem in the CVS repository 
(which has been fixed) and a bug in CVSup (which has not been 
fixed).  Here is the recommended work-around.  After you do this 
(once) you shouldn't see the problem again. 

1. Delete the "jakarta-tomcat' directory from your ports tree with 
"rm -rf". 

2. Find your checkouts file.  It is named 
"/usr/sup/ports-all/checkouts.cvs:." if you are using the example 
"ports-supfile" from "/usr/share/examples/cvsup".  Or substitute 
your actual collection name for "ports-all" if you're doing things 
differently.  If you still don't know where to look, study the 
cvsup(1) man page very carefully. 

Once you find the checkouts file, edit it and delete all lines 
containing "jakarta-tomcat". 

3. Run cvsup in the usual way (without the "-s" option).
Comment 8 John Polstra freebsd_committer freebsd_triage 2001-05-27 01:06:21 UTC
State Changed
From-To: analyzed->feedback

I have added a patch to the "net/cvsup" and "net/cvsup-devel" ports 
which fixes this problem.  People who upgrade to the latest version 
of one of these ports will not need to apply the work-around 
described earlier in this PR. 

With this patch, CVSup will still complain that it cannot delete 
"files" because the directory is not empty.  However, it is now a 
warning rather than a fatal error, and the update will run to 
completion.  The warning will happen only once.  After emitting 
the warning, CVSup will fix the damage in the checkouts file to 
eliminate the problem.  On subsequent updates everything will be 
OK and no more warnings will occur. 

I have bumped PORTREVISION to 1, and added "p1" to the end of the 
version number printed by CVSup, to make it easy to determine 
whether you have the patched port or not. 

Note, the "cvsup-bin" port is NOT patched, and will not be patched. 
If you want to upgrade you will need to install the "cvsup" or 
"cvsup-devel" port.  Or, wait a few days until new packages appear 
on the FTP sites and install one of them.  These two packages are 
now self-contained -- they don't depend at runtime on any Modula-3 
packages. 

This ends the saga of this PR, but I will leave it in the "feedback" 
state for a while longer to help prevent duplicates.
Comment 9 John Polstra freebsd_committer freebsd_triage 2001-07-18 05:44:42 UTC
State Changed
From-To: feedback->closed

The ports are fixed and the workaround is described above, 
so it's time to close this PR.