How to customize a release?

Ruslan Ermilov ru at freebsd.org
Thu Sep 2 23:49:04 PDT 2004


Hi Chris,

On Thu, Sep 02, 2004 at 04:19:18PM -0400, John Baldwin wrote:
> On Thursday 02 September 2004 04:07 pm, ctodd at chrismiller.com wrote:
> > John,
> > 	Thanks for the quick reply.
> >
> > > There is a 'KERNELS' variable that is helpful.
> >
> > I see this in the Makefile, but if I were to use KERNELS=MYKERNEL will
> > that prevent the other standard kernels from being built?
> >
Let me know if you believe this is unclear and should be improved (from the
release(7) manpage):

:      release.3        Makes and installs the GENERIC kernel as well as any
                                               ^^^^^^^        ^^^^^^^^^^^^^^
:                       other kernels listed in KERNELS.
                        ^^^^^^^^^^^^^        ^^^^^^^^^^
: 
:      KERNELS          Specifies a list of additional kernel configura-
                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
:                       tions to compile and install into the ``base'' dis-
:                       tribution.  Each kernel is installed into
:                       /boot/<config> so that it can be booted from the
:                       loader via ``boot <config>''.


> > > Also, look at LOCAL_PATCHES and LOCAL_SCRIPTS as far as how to patch a
> > > release build.  Note that you can include patches to
> > > src/release/Makefile in LOCAL_PATCHES if need be. :)
> >
> > LOCAL_PATCHES is what I'm using now (waiting for build to finish to see
> > how it worked). I was hoping for a way to populate the src tree without
> > doing a full release so I could create the patches, then run make release
> > only once (it took 5 hours on my devel system last time).  At this point
> > I've already done that, but for the next time I'd like to work more
> > efficiently.
> >
What do you mean, I don't get it?

> > BTW, I see I overlooked the RELEASENOUPDATE variable in the man page, so
> > that answers my question about preventing CVS updates on "make rerelease".
> > Unfortunately make rerelease didn't rebuild anything in /R/stage (I got
> > "ftp.1 is up to date"). Am I supposed to delete the stage directories to
> > force a rebuild, or do I need to do a full release to incorporate any
> > minor changes?
> 
> I just delete the files in ${CHROOTDIR}/usr/obj/usr/src/release to get it to 
> rebuild the targets I want.
> 
So do I.

One more hint: suppose you want to rebuild world inside the chroot.  Then
you have two options with "make rerelease": one is to *not* use RELEASENOUPDATE
-- it will then use CVS to update your source tree (beware this doesn't work
if you ran "make release" with EXTSRCDIR).  Another is to run "make rerelease"
with RELEASENOUPDATE and remove ${CHROOTDIR}/tmp/.world_done before doing it.
In any case, buildworld will be rebuilt with -DNOCLEAN, which should be fast.
To force rebuild of other stages, you need to remove particular files under
${CHROOTDIR}/usr/obj/usr/src/release/ (as has been already mentioned).


Cheers,
-- 
Ruslan Ermilov
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/freebsd-hackers/attachments/20040903/13b11da5/attachment.bin


More information about the freebsd-hackers mailing list