On Tue, Sep 26, 2006 at 10:18:05AM +0200, Ulrich Spoerlein
wrote:> On 9/26/06, Ruslan Ermilov <[1]ru@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@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