make release vs. installworld

Ruslan Ermilov ru at FreeBSD.org
Tue Sep 26 03:00:35 PDT 2006


On Tue, Sep 26, 2006 at 10:18:05AM +0200, Ulrich Spoerlein wrote:
>    On 9/26/06, Ruslan Ermilov <[1]ru at freebsd.org> wrote:
> 
>      On Tue, Sep 26, 2006 at 09:30:25AM +0200, Ulrich Spoerlein wrote:
>      [...]
>      > So, what's the recommended way to a) build own releases
>      >
>      Follow the release(7) manpage instructions.
> 
>    The actual release building is working fine. It's just that various
>    binaries disappear from the object directory. The object files itself are
>    still there: cat.o, df.o, dd.o, echo.o. But where have the binaries gone?
>    If I understand release(7) correctly, it does a full
>    buildworld/installworld cycle within the chroot. How can the installworld
>    succeed?
> 
After installworld inside the release chroot succeeds, the release.4
target makes one or more crunched binaries, and these throw away some
stuff in the objdir.  In my release object directory, I don't see the
"hostname", etc. which is expected (they are part of these crunched
binaries), but chmod is cerainly here:

$ ls -l /spool/release/usr/obj/usr/src/bin/chmod/
total 256
-rwxr-xr-x  1 root  wheel  10974 Sep 12 19:01 chmod
-rw-r--r--  1 root  wheel   2824 Sep 12 19:01 chmod.1.cat.gz
-rw-r--r--  1 root  wheel   3459 Sep 12 19:01 chmod.1.gz
-rw-r--r--  1 root  wheel   6816 Sep 12 19:01 chmod.o
$ 

The bottomline is that without fixing release.4 you cannot reuse the
release object directory to do an installworld.  Fixing release.4 is
not easy since it reuses some preparatory stuff built by early stages
of buildworld, to be upgrade- and cross-friendly, so just changing
MAKEOBJDIRPREFIX wouldn't work (just verified this).

>      > and b) update your servers with it.
>      >
>      You can use shell-script type of installation to do binary upgrades,
>      .../R/stage/dists/*/install.sh.
> 
>    Thanks for the tip, that might work. Although I would have preferred a
>    'make installkernel installworld delete-old delete-old-libs; mergemaster'.
>    There is a serious drawback in just installing the distributions: It will
>    clobber /etc. And since I have to run mergemaster and delete-old anyway,
>    there is no way around mount /usr/src via NFS.
> 
>    Perhaps I just do a full 'make buildworld' inside the chroot after 'make
>    release' has finished. That way all the binaries should be where they are.
>    Any objections?
> 
If you do a "make -DNO_CLEAN buildworld" it won't build exactly the
same binaries as a normal buildworld would do.  This has to do with
the same "bug" that crunched binaries build reuses the same object
directory.

>    Will this interfere with release.6 - release.8?
> 
I don't undertstand your question.  After release has rolled, release.[6-8]
have already been built, the contents has been packaged, and you're free
to do whatever you want with your /usr/obj (in the release chroot).


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-stable/attachments/20060926/48f43757/attachment.pgp


More information about the freebsd-stable mailing list