freebsd-dev/rescue
Ruslan Ermilov 60c3f10368 Ignoring MAKEFLAGS in rev. 1.15 was a very bad idea. This causes
wrong share/mk files to be used, which can be fatal with upgrades
or downgrades, e.g., when building RELENG_5 on HEAD.

Reported by:	glebius

For now, just exclude -P from MAKEFLAGS when running crunchgen(1).
(Note that it will still break when run with certain -d options.)

The real solution is to fix make(1) to not print stuff on stdout
when it's not supposed to, e.g., through the -P and -dX options,
and to fix crunchgen(1) to not redirect stderr to stdout when
running make(1).  Once this is implemented, this hack can go.
2005-01-20 10:43:43 +00:00
..
librescue Add knob NO_NIS (fka NO_YP_LIBC) and make world compileable when set. 2004-11-13 20:40:32 +00:00
rescue Ignoring MAKEFLAGS in rev. 1.15 was a very bad idea. This causes 2005-01-20 10:43:43 +00:00
Makefile
README

The /rescue build system here has three goals:

1) Produce a reliable standalone set of /rescue tools.

The contents of /rescue are all statically linked and do not depend on
anything in /bin or /sbin.  In particular, they'll continue to
function even if you've hosed your dynamic /bin and /sbin.  For
example, note that /rescue/mount runs /rescue/mount_nfs and not
/sbin/mount_nfs.  This is more subtle than it looks.

As an added bonus, /rescue is fairly small (thanks to crunchgen) and
includes a number of tools (such as gzip, bzip2, vi) that are not
normally found in /bin and /sbin.

2) Demonstrate robust use of crunchgen.

These Makefiles recompile each of the crunchgen components and include
support for overriding specific library entries.  Such techniques
should be useful elsewhere.  For example, boot floppies could use this
to conditionally compile out features to reduce executable size.

3) Produce a toolkit suitable for small distributions.

Install /rescue on a CD or CompactFlash disk, and symlink /bin and
/sbin to /rescue to produce a small and fairly complete FreeBSD
system.

These tools have one big disadvantage: being statically linked, they
cannot use some advanced library functions that rely on dynamic
linking.  In particular, nsswitch, locales, and pam are likely to all
rely on dynamic linking in the near future.


To compile:

# cd /usr/src/rescue
# make obj
# make
# make install

Note that rebuilds don't always work correctly; if you run into
trouble, try 'make clean' before recompiling.

$FreeBSD$