cvs commit: src/release Makefile

Ruslan Ermilov ru at FreeBSD.org
Thu Jun 5 12:56:42 PDT 2003


On Thu, Jun 05, 2003 at 10:07:28AM -0700, Marcel Moolenaar wrote:
> On Thu, Jun 05, 2003 at 01:00:07PM +0300, Ruslan Ermilov wrote:
> > On Tue, Jun 03, 2003 at 10:17:18PM -0700, Marcel Moolenaar wrote:
> > > marcel      2003/06/03 22:17:18 PDT
> > > 
> > >   FreeBSD src repository
> > > 
> > >   Modified files:
> > >     release              Makefile 
> > >   Log:
> > >   Have the port readmes follow the same logic as buildworld. We skip
> > >   doing make readmes if /tmp/.skip_ports exists. This file is created
> > >   after a complete run, which avoids that we do the lengthy operation
> > >   again for a rerelease.
> > >   When NOPORTS or NOPORTREADMES are defined, we create the file prior
> > >   to starting the release.
> > >   
> > >   Revision  Changes    Path
> > >   1.781     +5 -5      src/release/Makefile
> > > 
> > I think this is not quite right.  Instead, the /tmp/.ports_done
> > should be created, similar to /tmp/.world_done, when ports are
> > really done.
> 
> It is. The wording "complete run" is confusing. I meant a complete
> run of the make readmes, not of the release itself.
> 
Not quite.  You also create it when NOPORTREADMES is set.
Ports (readmes) aren't created in this case.  Er, and I
meant /tmp/.readmes_done of course.

> > When NOPORTS or NOPORTREADMES are defined, we should just not be
> > doing the relevant parts of "make release".
> 
> Which is exactly what happens. By making the different parts of
> a release cycle optional by checking for the existence of files,
> you can more easily interfere by creating files or removing them.
> Files are also a good way to maintain state across make invocations.
> 
What bugs me here is that we also (ab)use the /tmp/.skip_ports for
remembering "NOPORTS || NOPORTREADMES".

> > And of course, it
> > should be possible to run "make -DNOPORTS release" first, and be
> > able to run "make rerelease" later, and get the ports built.
> 
> It's not that simple AFAICT. If you follow a release -DNOPORTS -DNODOC
> with a rerelease -DRELEASENOUPDATE, you won't have a ports tree
> at all so you cannot possibly expect to have all the readmes built.
> Your rerelease will probably fail.
> 
We could check if /usr/ports/Makefile exists, but this case is
a self-foot-shooting IMO.  If you know you didn't check out ports
sources with "make release", and expect "make rerelease" to build
ports readmes, it should be clear that you don't want
-DRELEASENOUPDATE.  Or if you just want to rerelease the same
release, you should pass it the same flags.

There are other ways to shoot yourself in the foot.  You can
interrupt "make release" while it's doing "cvs co" of ports,
and run "make rerelease" with -DRELEASENOUPDATE.  You'll be
shooted in the foot too.

I'm actually thinking of getting rid of "rerelease", and instead
adding the -DNOCLEAN knob to "make release" to replace it.  The
checkout/update operation of CVS could be guessed by checking if
the target directory exists.

> Also, if you follow a release -DNOPORTS -DNODOC with a rerelease
> without -DRELEASENOUPDATE, it will fail too because it will try
> to update a non-existing tree and CVS doesn't like that.
> 
Yeah, here my guessing of checkout/update would be handy. ;)

> Yes, if you don't have -DRELEASENOUPDATE and you previously did
> checkout the ports collection, you'll update the ports tree and
> we should remove /tmp/.skip_ports, like we remove /tmp/.world_done
> after updating the source tree. The following patch should
> achieve that:
> 
> Index: Makefile
> ===================================================================
> RCS file: /home/ncvs/src/release/Makefile,v
> retrieving revision 1.782
> diff -u -r1.782 Makefile
> --- Makefile    4 Jun 2003 22:24:43 -0000       1.782
> +++ Makefile    5 Jun 2003 17:06:23 -0000
> @@ -383,6 +383,7 @@
>         rm -f ${CHROOTDIR}/tmp/.world_done
>  .if !defined(NOPORTS)
>         cd ${CHROOTDIR}/usr/ports && ${CVSPREFIX} cvs -R ${CVSARGS} -q update ${CVSCMDARGS} -P -d
> +       rm -f ${CHROOTDIR}/tmp/.skip_ports
>  .endif
>  .if defined(DOMINIMALDOCPORTS) && ${DOMINIMALDOCPORTS} == "YES"
>         for i in ${MINIMALDOCPORTS}; do \
> 
Yes, this change is needed in either case.  It means: if we update
the ports sources, we should be regenerating readmes.  How about
this instead (without anti-footshooting measure)?

%%%
Index: Makefile
===================================================================
RCS file: /home/ncvs/src/release/Makefile,v
retrieving revision 1.782
diff -u -r1.782 Makefile
--- Makefile	4 Jun 2003 22:24:43 -0000	1.782
+++ Makefile	5 Jun 2003 19:34:07 -0000
@@ -384,6 +384,7 @@
 .if !defined(NOPORTS)
 	cd ${CHROOTDIR}/usr/ports && ${CVSPREFIX} cvs -R ${CVSARGS} -q update ${CVSCMDARGS} -P -d
 .endif
+	rm -f ${CHROOTDIR}/tmp/.readmes_done
 .if defined(DOMINIMALDOCPORTS) && ${DOMINIMALDOCPORTS} == "YES"
 	for i in ${MINIMALDOCPORTS}; do \
 		( cd ${CHROOTDIR}/usr/$$i && ${CVSPREFIX} cvs -R ${CVSARGS} -q update ${CVSCMDARGS} -P -d ) ; \
@@ -453,21 +454,20 @@
 	echo "	${CROSSMAKE} ${WORLD_FLAGS} -DNOCLEAN buildworld && \\" >> ${CHROOTDIR}/mk
 	echo "	touch /tmp/.world_done"		>> ${CHROOTDIR}/mk
 	echo "fi"				>> ${CHROOTDIR}/mk
-	echo "if [ ! -f /tmp/.skip_ports ]; then" >> ${CHROOTDIR}/mk
+.if defined(NOPORTS) || defined(NOPORTREADMES)
+	echo "if [ ! -f /tmp/.readmes_done ]; then" >> ${CHROOTDIR}/mk
 	echo "	echo \">>> make readmes started on \`LC_ALL=C TZ=GMT date\`\"" >> ${CHROOTDIR}/mk
 	echo "	cd /usr/ports"			>> ${CHROOTDIR}/mk
 	echo "	make ${PORTREADMES_FLAGS} readmes" >> ${CHROOTDIR}/mk
-	echo "	touch /tmp/.skip_ports"		>> ${CHROOTDIR}/mk
+	echo "	touch /tmp/.readmes_done"	>> ${CHROOTDIR}/mk
 	echo "	echo \">>> make readmes finished on \`LC_ALL=C TZ=GMT date\`\"" >> ${CHROOTDIR}/mk
 	echo "fi"				>> ${CHROOTDIR}/mk
+.endif
 	echo "cd /usr/src/release"		>> ${CHROOTDIR}/mk
 	echo "make obj"				>> ${CHROOTDIR}/mk
 	echo "make \$${_RELTARGET}"		>> ${CHROOTDIR}/mk
 	echo "echo \">>> make ${.TARGET} for ${TARGET} finished on \`LC_ALL=C TZ=GMT date\`\"" >> ${CHROOTDIR}/mk
 	chmod 755 ${CHROOTDIR}/mk
-.if defined(NOPORTS) || defined(NOPORTREADMES)
-	touch ${CHROOTDIR}/tmp/.skip_ports
-.endif
 	# Ensure md.ko is loaded if md(4) is not statically compiled into the kernel
 	-mdconfig 2>/dev/null
 	env -i /usr/sbin/chroot ${CHROOTDIR} /mk
%%%


Cheers,
-- 
Ruslan Ermilov		Sysadmin and DBA,
ru at sunbay.com		Sunbay Software Ltd,
ru at FreeBSD.org		FreeBSD committer
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/cvs-src/attachments/20030605/e3002efc/attachment.bin


More information about the cvs-src mailing list