On Tue, Sep 26, 2006 at 10:18:05AM +0200, Ulrich Spoerlein wrote: > On 9/26/06, Ruslan Ermilov <[EMAIL PROTECTED]> 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 [EMAIL PROTECTED] FreeBSD committer
pgpi0MTRzKQzN.pgp
Description: PGP signature