Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 26 Jan 2001 17:17:00 GMT
From:      jhs@freebsd.org
To:        FreeBSD-gnats-submit@freebsd.org
Subject:   ports/24658: diff for [4.2-RELEASE] src/release/Makefile
Message-ID:  <200101261717.f0QHH0V14737@jhs.muc.de>

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

>Number:         24658
>Category:       ports
>Synopsis:       Enhancement to src/release/Makefile
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-ports
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Fri Jan 26 09:20:01 PST 2001
>Closed-Date:
>Last-Modified:
>Originator:     Julian Stacey jhs@freebsd.org
>Release:        FreeBSD 4.2-RELEASE i386
>Organization:
FreeBSD
>Environment:

	- Building a release while the cvs tree is not frozen, & is thus
	  subject to transient incoming inconsistencies from asynchronous
	  commits to ports/.
	- Using my local generic FreeBSD 4.2-RELEASE i386 build engine.
	  (not my customised personal host).

>Description:

	This diff increases the chance of succesfully making a release
	without needing NOPORTS or NOPORTREADMES, even in the face of an
	inconsistent ports tree.
	EG in ports/audio/ extracted from ctm cvs-cur 7067:
		Makefile had SUBDIR+=ripit-atapi
		but ripit-atapi/ was already empty except for an empty
	files/ directory.
	That inconsistency broke make release.
	My patch should avoid similar future problems.
	(Historical note: By or before ctm cvs-cur 7073 the SUBDIR+= in 
	ports/audio/Makefile was removed to match the empty ripit-atapi/ .
	But the older 4.2-WC-CDROM/Disc2/CVS-Repo/ports.tar.gz shows
	ports/audio/ripit-atapi/ with 11 files. )

>How-To-Repeat:

	Create an inconsistent cvs/ports subdir with a SUBDIR+= pointing to an
	empty directory, then wait for cvs -P used below to prune the empty
	directory to non existance & then `make readmes` (from `make release`
	fails. 
	(Note `cd ports/audio; make readmes` does not fail on mere empty
	 directories, but as cvs fails to create an empty directory, make fails)

	su ; cd /usr/src/release ;
	make release CHROOTDIR=/a_dir_with_a_gig_free \
	 MACHINE_ARCH=i386 RELEASETAG=RELENG_4_2_0_RELEASE \
	 PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games \
	 CVSROOT=/usr1/cvs BUILDNAME=4.2-RELEASE

>Fix:

	

	Apply diff, (after removing some/all of comment block).

*** 4.2-RELEASE/src/release/Makefile	Fri Jan 26 15:17:08 2001
--- new/src/release/Makefile	Fri Jan 26 16:01:30 2001
***************
*** 170,175 ****
--- 169,185 ----
  DOCREL= doc.1
  .endif
  
+ # If you are an optimist & hope all 4000 ports are in perfect order,
+ # uncomment next line (or assert it on command line),
+ #	PREANPORTS=-P
+ # else leave it commented out, if you prefer to waste a little space & have
+ # a better chance of having "make readmes" run to completion.
+ # 4.2-RELEASE ports/audio/ripit-atapi is an example of a directory containing
+ # just an empty directory "files". A cvs -P does not create ripit-atapi,
+ # but audio/Makefile has SUBDIR+= ripit-atapi, & hangs "make readmes"
+ # with 2 x "cd: can't cd to ripit-atapi"
+ # An alternate more drastic way to avoid make breaking is assert NOPORTREADMES
+ 
  .if !defined(NOPORTREADMES)
  MAKEREADMES=	make readmes PORTSDIR=${CHROOTDIR}/usr/ports
  .else
***************
*** 222,230 ****
  .endif
  .if !defined(NOPORTS)
  .if defined(PORTSRELEASETAG)
! 	cd ${CHROOTDIR}/usr && rm -rf ports && cvs -R -d ${CVSROOT} co -P -r ${PORTSRELEASETAG} ${RELEASEPORTSMODULE} && cd ports && ${MAKEREADMES}
  .else
! 	cd ${CHROOTDIR}/usr && rm -rf ports && cvs -R -d ${CVSROOT} co -P ${RELEASEPORTSMODULE} && cd ports && ${MAKEREADMES}
  .endif
  .endif
  .if !defined(NODOC)
--- 232,240 ----
  .endif
  .if !defined(NOPORTS)
  .if defined(PORTSRELEASETAG)
! 	cd ${CHROOTDIR}/usr && rm -rf ports && cvs -R -d ${CVSROOT} co ${PREANPORTS} -r ${PORTSRELEASETAG} ${RELEASEPORTSMODULE} && cd ports && ${MAKEREADMES}
  .else
! 	cd ${CHROOTDIR}/usr && rm -rf ports && cvs -R -d ${CVSROOT} co ${PREANPORTS} ${RELEASEPORTSMODULE} && cd ports && ${MAKEREADMES}
  .endif
  .endif
  .if !defined(NODOC)
***************
*** 246,252 ****
  	cd ${CHROOTDIR}/usr/src && cvs -R -q update -P -d -r ${RELEASETAG}
  .endif
  .if !defined(NOPORTS)
! 	cd ${CHROOTDIR}/usr/ports && cvs -R -q update -P -d
  .endif
  .if !defined(NODOC)
  	cd ${CHROOTDIR}/usr/doc && cvs -R -q update -P -d
--- 256,262 ----
  	cd ${CHROOTDIR}/usr/src && cvs -R -q update -P -d -r ${RELEASETAG}
  .endif
  .if !defined(NOPORTS)
! 	cd ${CHROOTDIR}/usr/ports && cvs -R -q update ${PREANPORTS} -d
  .endif
  .if !defined(NODOC)
  	cd ${CHROOTDIR}/usr/doc && cvs -R -q update -P -d


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


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-ports" in the body of the message




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