the second buildworld environment is fully isolated from parent's
environment variables.
Tested virtually on: snapshots.jp.FreeBSD.org
Approved by: arch@ (silently)
MFC after: 2 weeks
In fact, these variable are set as environment variables since we run
"make TARGET=xxx TARGET_ARCH=xxx"; TARGET and TARGET_ARCH are declared
in the command line arguments. However, if you are not make(1) guy,
it is hard to understand that TARGET/TARGET_ARCH are appropriately set
in a chroot environment (as environment variables).
Now, the only environment variable need to be set explicitly is 'PATH'.
If we set PATH in /mk script, we can make pristine sandbox for release
build (i.e., "env -i /usr/sbin/chroot ${CHROOT} /mk" will work).
Valuable comments about this issue from: ru
Tested on (virtually): snapshots.jp.FreeBSD.org
MFC after: 2 weeks
arch. This makes "make release TARGET_ARCH=foo" really work.
(I only tested with "make rerelease" before to save some time and did
not notice the problem.)
You need to set TARGET_ARCH and possibly TARGET, the same
way you normally do it for a cross build(7).
Renamed `distribworld' to a more natutal `distributeworld'.
Put pwd_mkdb(8) under ${INSTALLTMP}; for `distributeworld'.
that are to be run on the building host. (Currently, bin/sh
and usr.sbin/sysinstall use them.) Make sure we build them
in the correct environment, like we do it in the buildworld.
Do not install games and profiled libraries to the ${CHROOTDIR}
with the initial installworld.
Eliminate the need in the second installworld. For that, make sure
_everything_ is built in the "world" environment, using the right
tool chain.
Added SUBDIR_OVERRIDE helper stuff to Makefile.inc1. Split the
buildworld process into stages, and skip some stages when
SUBDIR_OVERRIDE is set (used to build crypto, krb4, and krb5
dists).
Added NO_MAKEDB_RUN knob to Makefile.inc1 to avoid running
makewhatis(1) at the end of installworld (used when making crypto,
krb4, and krb5 dists).
In release/scripts/doFS.sh, ensure that the correct boot blocks are
used.
Moved the creation of the "crypto" dist from release.5 to
release.2.
In release.3 and doMFSKERN, build kernels in the "world"
environment. KERNELS now means "additional" kernels, GENERIC is
always built.
Ensure we build crunched binaries in the "world" environment.
Obfuscate release/Makefile some more (WMAKEENV) to achieve this.
Inline createBOOTMFS target.
Use already built GENERIC kernel modules to augment mfsfd's
/stand/modules. GC doMODULES as such.
Assorted fixes:
Get rid of the "afterdistribute" target by moving the single use
of it from sys/Makefile to etc/Makefile's "distribute".
Makefile.inc1: apparently "etc" no longer needs to be last for
"distribute" to succeed.
gnu/usr.bin/perl/library/Makefile.inc: do not override the
"install" and "distribute" targets, do it the "canonical" way.
release/scripts/{man,cat}pages-make.sh: make sure Perl manpages and
catpages appear in the right dists. Note that because Perl does
not respect the MANBUILDCAT (and NOMAN), this results in a loss of
/usr/share/perl/man/cat* empty directories. This will be fixed
soon.
Turn MAKE_KERBEROS4 into a plain boolean variable (if it is set it
means "make KerberosIV"), as documented in the make.conf(5)
manpage. Most of the userland makefiles did not test it for "YES"
anyway.
XXX Should specialized kerberized libpam versions be included into
the krb4 and krb5 dists? (libpam.a would be incorrect anyway if
both krb4 and krb5 dists were choosen.)
Make sure "games" dist is made before "catpages", otherwise games
catpages settle in the wrong dist.
Fast build machine provided by: Igor Kucherenko <kivvy@sunbay.com>
For rerelease, run "make -DNOCLEAN world" instead of simple and
insufficient in some cases "make all install". This is especially
true for cross-arch "make release"s which we don't (yet) support.
since we have no ACPI feature in the installation kernel at this time.
Without having this, we'll see
ACPI no autoload failed -- no such file or directory
message at boot time, and it makes some confusion to the users. We can
backout this change if installation kernel has ACPI feature.
PR: 36911 (partly)
- don't make device files since we are in the DEVFS era.
(for the last resort, fixit.flp still has /dev/MAKEDEV.)
- increase FIXITINODE size to 10 times (40000).
After this change, we have 42kbytes of free space, and 38
of free inodes (confirmed with 5.0-CURRENT-20020327-JPSNAP).
Since 4-stable doesn't have DEVFS, we can't MFC this (except FIXITINODE).
/etc/defaults/pccard.conf. Assume for now that only
MACHINE_ARCH=="i386" wants to do PCCARD installs. We're still using
too much space, but this is a big help.
We ensure that 'ports.tgz' tarball should have ports/distfiles directory.
At first, ${CHROOTDIR}/usr/ports is empty (rm -rf ports), then extract
ports files from CVS repository. Then if RELEASEDISTFILES is defined,
${CHROOTDIR}/usr/ports/distfiles directory is created by cp(1). However,
if you don't specify RELEASEDISTFILES, there is no chance to create
${CHROOTDIR}/usr/ports/distfiles directory.
Submitted by: {ushi,tora}.jp.FreeBSD.org
MFC after: 5 days
DOCDISTFILES if defined. No impact should happen with this change.
DOCDISTFILES is introduced by rev. 1.541, to point the directory that
contains the distfiles for ports/textproc/docproj. It's good, but
we also build ports/sysutils/mkisofs during the release (if MAKE_ISOS
is defined). It is natural that cdrtools tarball is prefetched, then
copy it under ${CHROOTDIR}/usr/ports/distfiles.
As a result, DOCDISTFILES variable is somewhat abused for non-doc
tarballs; *DOC*DISTFILES is no longger appropriate name for that.
PR: 16843
PR: 34194
Submitted by: murray
MFC after: 6 days
are removed, because ports.tgz includes distfiles by accident.
However, removing files/directories is *not* mandatory. The only
requirement is "ports.tgz doesn't include distfiles/* but distfiles
directory itself". If this is correct, the right way is to set an
option to tar(1), not to include these files.
This commit is based on PR: 34194, but a little bit of modification
is made by me (original patch doesn't include 'distfiles' directory).
PR: 34194
Reviewed by: Adrian Steinmann <ast@marabu.ch> (PR submitter)
MFC after: 9 days
5.0-CURRENT-20020121-JPSNAP was failed to build since kern.flp has no
space. There is already a hack to kgzip loader, and it makes:
-r-xr-xr-x 1 root wheel 163840 Jan 21 07:40 loader*
-r-xr-xr-x 1 root wheel 90121 Jan 21 08:06 loader.kgz*
73719 bytes of free spaces to us.
doesn't get spammed by RELNOTESng files.
Previously, we built the RELNOTESng files "in place" and then
populated the media (e.g. floppy, cdrom, ftp) areas from the build
directories. However, the distributions got rolled after the
RELNOTESng build, and thus picked up the rendered RELNOTESng files.
Now, we install the RELNOTESng documents to R/stage/release.doc, then
clean out the original directories in src/release/doc. We use the
renditions in the staging area to populate the media areas.
PR: 33141
MFC after: 3 days
(plus re approval)
on CD's 1 and 2. Create a simple /boot/loader.conf on each CD that loads
/boot/mfsroot.gz as a mfs_root image. The mfsroot moved from /mfsroot.gz
to /boot/mfsroot.gz so that all of the boot stuff is in /boot. This allows
a full kernel to be used when installing from CD on all architectures
that support CD booting. Note that on x86, this requires using
/boot/cdboot as a no-emulation boot image instead of /floppies/boot.flp.
Alpha CD. This makes it easier to customize ISO's locally by being able
to replace either the mfsroot or the kernel w/o having to do both. It also
allows us to switch to using the full GENERIC kernel when booting from CD
on the Alpha and on x86 when using cdboot. We don't do this yet, however.
Tested on: x86, alpha
come from the installation document (of the release documentation)
not the readme. The installation document is the one that has the
content of the old FLOPPIES.TXT.
Pointy hat to: bmah
I guess I pooched the permissions on the scripts before committing them
since they're not executable and now it's too late to change (I think -
I suppose you could chmod the ,v files and it might inheirit but I don't
feel like asking the repomeisters to try that).
Noticed by: Dirk Froemberg <dirk@freebsd.org>
+ allows one to set _R so one can more easily make an iso after the fact,
in the directory `make release' was issued in
+ changes name from miniboot to miniinst since we make other bootable ISOs
also (and we might confuse someone)
Approved by: jkh
as part of the release if MAKE_ISOS is set. Will also build the
first CD with packages (in addition to the "minimal" CD) if CD_EXTRA_BITS
points to them. This probably need a bit more work to get fully useful,
but it at least covers the basics for now.
NO_SENDMAIL flag if set. The whole NO_FOO mechanism in /usr/src
is pretty bogus and needs to be re-examined in the context of a
larger argument about modularity, but that's something for another
time.
Submitted by: Peter Pentchev <roam@orbitel.bg>
one Makefile variable to control the building/installation of both
the DocProj documents and RELNOTESng.
Suggested by: obrien, dd
Tested by: John Hay <jhay@icomtek.csir.co.za>
files).
Another diff will be forthcoming to fold the functionality of
NORELNOTES into NODOC.
Tested by: John Hay <jhay@icomtek.csir.co.za>
Pointy hat to: bmah
images get TXT renderings only; CDROM and FTP areas get TXT and HTML.)
Remove the old *.TXT release documentation files, as they
have been subsumed into RELNOTESng. The new layout will greatly
facilitate their maintenence and help keep them internally consistent.
the need to also create the entire ports tree during a `make release'.
The main motivation behind this is that handling the ports tree still
takes a huge amount of time due to the large number of directories
involved, even on modern disks.
The solution is to establish a list of dependent ports that are
minimally required. This list needs to be manually maintained in case
the doc ports toolchain changes, and has thus been broken out into a
separate file Makefile.inc.docports. (release/Makefile has gotten
overly lengthy already anyway.)
Discussed with: bmah, nik
Reviewed by: bmah
/stand/etc on the mfsroot, and hence to /etc on the install target
disk for use during the install. It also links netconfig and services
into /etc on the mfsroot so that they are available to a fixit
shell.
Submitted by: iedowse
the commit logs - I just found the reason for the self-pointing symlink, as
documented in revision 1.517 by phk, who committed the change over a year
ago. Accordingly, put the feature back and drop all plans to MFC the previous
"fix".
asking what it's for and I can't answer since I can't see any conceivable
use for it. Unless someone corrects that impression, I'll also MFC this
change in a few days.
commands to build sysinstall manually during release.
- Get the sysinstall help files from /usr/src/usr.sbin/sysinstall/help
rather than ${.CURDIR}/sysinstall/help.
one-way hash functions for authentication purposes. There is no more
"set the libcrypt->libXXXcrypt" nightmare.
- Undo the libmd.so hack, use -D to hide the md5c.c internals.
- Remove the symlink hacks in release/Makefile
- the algorthm is set by set_crypt_format() as before. If this is
not called, it tries to heuristically figure out the hash format, and
if all else fails, it uses the optional auth.conf entry to chose the
overall default hash.
- Since source has non-hidden crypto in it there may be some issues with
having the source it in some countries, so preserve the "secure/*"
division. You can still build a des-free libcrypt library if you want
to badly enough. This should not be a problem in the US or exporting
from the US as freebsd.org had notified BXA some time ago. That makes
this stuff re-exportable by anyone.
- For consistancy, the default in absence of any other clues is md5. This
is to try and minimize POLA across buildworld where folk may suddenly
be activating des-crypt()-hash support. Since the des hash may not
always be present, it seemed sensible to make the stronger md5 algorithm
the default.
All things being equal, no functionality is lost.
Reviewed-by: jkh
(flame-proof suit on)
The distribute target is basicly the same as an install. For
perl, this means that miniperl is needed. Since miniperl is
only present in the object directory, we need to make sure
the path is set correctly. To do this, we have make release
use a new distribworld target that sets the path before doing
a make distribute.
overwriting $PATH, and find mknod $PATH instead of hardcoding /sbin so
that the copy of MAKEDEV on the fixit floppy is usable, since mknod and
expr live in /mnt2/stand when the fixit floppy is running.
Get rid of the sed invokation in release/Makefile that attempts to
delete the PATH setting stuff from MAKEDEV on the fixit floppy. This
hasn't worked since a long ago change to MAKEDEV caused the sed
expression to no longer match.
PR: misc/21241
mimics that of tcpdump in that for normal builds, sendmail will only be
built once. For 'make release', it is built once for the bin dist and
once for the crypto dist. This method also removes the need for two separate
Makefiles (which could become out of sync).
Suggested by: bde
Assisted by: kris
build process in too many cases. Adding mtree to bootstrap-tools
to solve this breaks the upgrade path because mtree needs a
libc that has strtofflags and fflagstostr.
kernel config file.
- Add WORLD_FLAGS and KERNEL_FLAGS so you can build world and kernel with
extra make options such as -jX to speed up release builds.
- When building kernels, allow their hints to tag along, and use this to
install hints onto the boot floppy. Since the boot floppy doesn't load
loader.4th, we have to change device.hints to strip comments and change
each line to an explicit set command.
IPv6 configuration is only done by rtsol. Does someone really
need manual configuration? :-)
You can specify IPv6 DNS server as well.
We have only one server ftp7.jp.freebsd.org that speaks IPv6
in this time. ftp7.jp speaks IPv4 as well and also listed as
Japan #7.
Approved by: jkh
- Small cleanups to kernel installs.
- Don't install kernel.config and loader.config on the boot floppy since
they haven't been used in quite some time.
src/release/{boot,fixit}_crunch.conf.
- Added machine specific fixit_crunch.conf for PC/AT and PC-98 to
src/release/$MACHINE.
- Use config file in src/release/$MACHINE if exist. If it does not exist,
use in src/release.
boot.flp and plain boot.flp.
- Clean up crunchgen related routine.
- Add PC-98 support.
TODO:
o Documentation
o Fix some messages for PC-98
o Decrease the size of fixit.flp to 1.2MB
o I18N (See: http://www.jp.FreeBSD.org/BootAsia/index.html)
No response from jkh
distfiles to build the docproj port during release. Prior to this, the
distfiles were copied froom ${DISTFILES}. However, if like me, you needed
to store the distfiles in some directory other than /usr/ports/distfiles,
for example /usr/docdistfiles, then when you overrode ${DISTFILES} it broke
the release build when it tried to build docproj port in the chroot'd
release area. To preserve backwards compatibility, DOCDISTFILES defaults
to the value of DISTFILES.
Ok'd by: jkh
the ports and doc trees. There is no change if we are not building a
release (i.e., we are not using a tag of the form RELENG_ver_RELEASE
--e.g., a RELENG_ver tag used to build a snapshot).
This should allow the ports and doc freezes during the release cycles
to be somewhat shorter, as commits to those (non-branched) trees can
resume as soon as the tags are laid down.
Reviewed by: nik
Approved by: jkh
Oh why did I select a first project that needed to touch release/Makefile..
The fact that my release-building Alpha panics on me does not help either :(
and concat these to the corresponding generic *.TXT living in ./texts
This is currently aimed at HARDWARE.TXT but works for things like RELNOTES.TXT
too.
Reviewed by: jkh
with kld etc just fine, but tracebacks would have less information and
nm /kernel wouldn't be so good).
- Just strip the kernel on the boot disk. This does not affect kld or
module loading, there are two symbol tables in a kernel. There is the
dynamic linking one (.dynsym+.strtab) with just global symbols and a user
symbol table (.symtab+.strtab) with all symbols. BTW; objdump lies and
hides the second one. There's a good half a meg or so that can be saved
from an average kernel by stripping it.
Kill duplicates for programs that have been in the boot crunched image
as well as on the fixit floppy (pwd, newfs, hostname, test). Our
space is really too valuable to have them around there twice. I doubt
pwd needs to be there at all since it's a builtin into sh(1) anyway
(oh, and the same applies to test(1) IIRC), but heck, leave them by
now.
Use the new `fixit' target in MAKEDEV to create the /dev nodes on
the floppy, instead of including the kitchensink...
Finally, tune the values used for creating the floppy. I currently
end up with
Filesystem 1K-blocks Used Avail Capacity iused ifree %iused
/dev/vnn0c 1363 1301 -47 104% 368 14 96%
...which is not quite ideal yet, but at least a working configuration
again.
Set ALLLANG to install all the languages, otherwise set DOC_LANG
to just the languages (and encodings) you want to install.
Default to building the html-split (lots of small HTML files, with
links to go between them), html (one big honking HTML file), and plain
text versions of the documentation. Does not compress any of the docs
prior to doing the installation.
Testing and feedback: Jack O'Neill <jack@germanium.xtalwind.net>,
Cockups and typos: nik
in some code from C. Stone to parse the lease information. This is still
a WIP and this commit is largely intended to allow others to sync up; the
dhclient code still only works when doing dhcp configuration post-install
and requires a bit more work on the boot floppy before it will truly
work in the minimal bootstrapping role.
a ports tree which was installed initially with the system later,
but this is probably not the general case (user CVSups the repository
rather than the checked-out bits) and it's penalizing everyone else
with excessive inode consumption.
Enable MS-CHAP support.
release/Makefile:
Build a separate NOCRYPT version of pppd, to keep This Great
Nation's top-secret cryptographic tools out of the filthy hands
of those evil furriners.
1. Enable use of serial console for installation by using autoboot
instead of boot.
2. Beep when the mfs root floppy needs to be placed in the fdd.
3. Beep again when mfs root image is loaded and the loader waits
for ten seconds before it starts booting for any input. (Serial
console users can say " boot -h" here.)
for those folks with large floppy drives, LS-120s or CDROMs. Everyone
else will now have to use kern.flp & mfsroot.flp to install from.
We've held this off as long as possible and there's just no more fat
to trim. :( I'll look at increasing the mfsroot size too later, depending
on how well it compresses.