PERFORCE change 127721 for review
John Birrell
jb at FreeBSD.org
Thu Oct 18 14:29:31 PDT 2007
http://perforce.freebsd.org/chv.cgi?CH=127721
Change 127721 by jb at jb_freebsd1 on 2007/10/18 21:29:13
A new release process which doesn't use a chroot. This is based on
the assumption that the current buildworld process is not only
good enough to update the running system, but good enough to
package as a release. The proviso here is that the host make options
haven't been too drastically customised.
The current release process is not re-entrant. To do the crunches,
it breaks the buildworld that it does in the chroot.
This process uses stage completion targets that aren't simply
used to order the process, but to correctly identify that a stage
has been completed, with dependencies on those things which would
require the stage to be repeated.
The goal here is two-fold -- firstly to reduce the time taken
to build a release; and secondly to allow multiple targets for
the release.
The 'release' target is still there. That produces the installation,
docs, live CDs and floppies if required. Alternatives to the
'release' target allow builds like:
make live_iso
which will do all the the things required to build the live ISO on
the host architecture.
make TARGET=sun4v live_iso
will do all the things to cross-build a live ISO for sun4v on a
different host architecture.
make universe
will build releases for all architectures (except arm which doesn't
have a GENERIC kernel).
make UNIVERSE_TARGETS="amd64 i386 sun4v" universe
will build releases for just those targets.
If a release build fails, it can be restarted without having to
start from scratch. It does the buildworld stage with NO_CLEAN
set by default (unless WORLDCLEAN is defined on the command
line). At the end of the buildworld, a completion file is touched
to note the time of the last buildworld.
There is a build tool called 'latest' which is used to touch
a file in the object tree with the timestamp of the most recently
modified file in the source tree. This allows the release
process to decide that a new buildworld isn't required if the
buildworld completion file is more recent than the one that 'latest'
sets.
This release process is extensible. Defining RELOPT=foo on the
make command line will cause foo/Makefile.inc1 to be included
if it exists and any targets in that file can be built. As an
example, pcbsd/Makefile.inc1 might contain the release packaging
for PC-BSD.
make RELOPT=pcbsd pcbsd_iso disc1_iso
will build the PC-BSD and FreeBSD install ISOs. They will share
the common stages like buildworld, tarballs etc.
Affected files ...
.. //depot/projects/dtrace/src/newrelease/Makefile#1 add
.. //depot/projects/dtrace/src/newrelease/Makefile.distrib#1 add
.. //depot/projects/dtrace/src/newrelease/Makefile.inc1#1 add
.. //depot/projects/dtrace/src/newrelease/Makefile.subr#1 add
.. //depot/projects/dtrace/src/newrelease/bootonly/Makefile.inc1#1 add
.. //depot/projects/dtrace/src/newrelease/disc1/Makefile.inc1#1 add
.. //depot/projects/dtrace/src/newrelease/disc2/Makefile.inc1#1 add
.. //depot/projects/dtrace/src/newrelease/doc/Makefile.inc1#1 add
.. //depot/projects/dtrace/src/newrelease/fixitfd/Makefile.inc1#1 add
.. //depot/projects/dtrace/src/newrelease/floppies/Makefile.inc1#1 add
.. //depot/projects/dtrace/src/newrelease/ftp/Makefile.inc1#1 add
.. //depot/projects/dtrace/src/newrelease/live/Makefile.inc1#1 add
Differences ...
More information about the p4-projects
mailing list