version 1.1, 2000/08/17 20:17:43 |
version 1.45, 2001/10/30 06:05:28 |
Line 7 For a more detailed description see Make |
|
Line 7 For a more detailed description see Make |
|
|
|
Recent changes: |
Recent changes: |
^^^^^^^^^^^^^^^ |
^^^^^^^^^^^^^^^ |
|
20011030: |
20000623: |
libc/locale/wcstod.c now needs new lint(1). Update lint(1) |
MKCRYPTO and friends added to share/mk/bsd.own.mk. |
before building libc. |
'cd share/mk ; make install' needed before make build. |
|
|
20011029: |
|
The new document BUILDING.mdoc (view with nroff | more, or |
|
see pre-generated .txt and .html versions) describes the build |
|
procedure in great detail. BUILDING, and the USE_NEW_TOOLCHAIN |
|
build process, are intended in the long run to replace this |
|
manual update log. |
|
|
|
Users building a USE_NEW_TOOLCHAIN system should read the |
|
BUILDING document for caveats. Generally, BUILDING supersedes |
|
UPDATING for these systems, as tool updating is taken care of |
|
by the new build system. |
|
|
|
20011028: |
|
src/etc/Makefile now needs install to be able to handle |
|
symlinks that point to nowhere. A bug in install that |
|
prevented this was corrected. |
|
|
|
Solution: update and reinstall usr.bin/xinstall |
|
Better Solution: Use the new toolchain and it will just work |
|
for you. |
|
|
|
20011006: |
|
/etc/mtree/NetBSD.dist has been updated to take advantage of |
|
absolute path support added to mtree(8). Older mtree(8)s don't |
|
understand the format. |
|
|
|
Solution: update and reinstall usr.sbin/mtree |
|
|
|
20011004: |
|
Crunchgen has been updated to work via reach-over makefiles. Updating |
|
is suggested before running a snapshot build |
|
|
|
20010915: |
|
The new "ubcperf" code committed by Chuck Silvers removed |
|
a header file, uvm/uvm_vnode.h. There may be stale .depend |
|
files that still reference this file. |
|
|
|
Solution: "make cleandir && make dependall" in affected |
|
directories. |
|
|
|
20010803: |
|
grep.info is now built from grep.texi using makeinfo. Since it |
|
requires makeinfo v4.0, you need to install new texinfo before |
|
building gnu/usr.bin/grep. To install new texinfo, please follow |
|
the instruction described in 20010726 entry. |
|
|
|
20010803: |
|
(i386 only): i386 kernel now uses new instructions like |
|
`fxsave' which old gas doesn't understand. To build the |
|
kernel successfuly, you need to build and install new gas |
|
(gnu/usr.bin/gas.new), or (temporarily) comment out |
|
"options I686_CPU" from your kernel configuration until you |
|
rebuilt your userland (and got a new gas). |
|
|
|
20010731: |
|
Bootloader update on ELF platforms. DDB in kernels from before |
|
this will be unable to read symbol tables provided by newer |
|
bootloaders. |
|
|
|
20010726: |
|
Texinfo was updated to 4.0. To avoid failures when trying to |
|
build the included texinfo files, do: |
|
|
|
cd src/gnu/usr.bin/texinfo |
|
make MKINFO=no dependall install |
|
|
|
20010718: |
|
Enabled correct .init/.fini processing in crt0. The way this |
|
was done was to change a -I directive to cc(1), which means |
|
make(1) will have a stale dependency (it will be checking the |
|
timestamp on the wrong "dot_init.h"). |
|
|
|
The symptom you will see is that new programs die with SIGSEGV |
|
if you have a stale dependency. |
|
|
|
Solution: "make cleandir" in both lib/csu and libexec/ld.elf_so |
|
before starting your build. |
|
|
|
20010628: |
|
A construct was added to uvm_page.h that uncovered a bug |
|
in lint(1). If you get a warning/error about a non-portable |
|
bitfield, update your lint(1) before proceeding. |
|
|
|
20010226: |
|
Added named user/group to system. Need to hand add this in or builds |
|
will break as mtree aborts early. |
|
|
|
To work around add by hand: |
|
|
|
named:*:14: |
|
|
|
to /etc/group and add: |
|
|
|
named:*:14:14::0:0:Named pseudo-user:/var/named:/sbin/nologin |
|
|
|
to master.passwd (use vipw for instance if doing by hand). |
|
|
|
Now a make build should progress. |
|
|
|
20010219: |
|
get/setprogname() added. Any hostprog's that may use this will need |
|
to be bootstrapped manually until the host system is current. |
|
|
|
Known problems: sys/arch/macppc/stand/fixcoff |
|
usr.sbin/config (adding -DMAKE_BOOTSTRAP to |
|
CFLAGS and rebuilding should work) |
|
usr.sbin/mdsetimage - Build a static copy if |
|
building a snapshot before fully bootstrapped. |
|
|
|
20010204: |
|
prepare the code to compile with stricter gcc flags. in |
|
particular start eliminating redundant declarations. Yacc |
|
needs to be installed before make build. |
|
|
|
20010114: |
|
introduce .if commands(target) in make(1). You need to |
|
bring everything up-to-date first, then without installing |
|
anything make and install in usr.bin/make, then proceed |
|
with make build. |
|
|
|
20010101: |
|
bsd.subdir.mk committed 20001230 had a bug which caused |
|
afterinstall targets to run too soon; update again. |
|
|
|
20001230: |
|
New share/mk files needed to support .WAIT in SUBDIR variables. |
|
If you get make errors, |
|
(cd share/mk; make install) |
|
Also, PRINTOBJDIR has changed and is now used more heavily. |
|
|
|
20001019: |
|
The `ca' device driver has been replaced by `ld'; although the |
|
major and minor numbers haven't changed, you should update your /dev |
|
directory. |
|
|
|
20000929: |
|
The following make directives are obsoleted. |
|
MKCRYPTO_RSA NOCRYPTO_RSA NOCRYPTO_RC5 NOCRYPTO_IDEA |
|
By default, RSA is built into libcrypto. IDEA and RC5 will not be |
|
built into libcrypto. By using MKCRYPTO_{RC5,IDEA}, you can build |
|
additional library libcrypto_{idea,rc5}. |
|
|
|
|
Hints for a more successful build: |
Hints for a more successful build: |
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
Build a new kernel first: |
|
This makes sure that any new system calls or features |
|
expected by the new userland will be present. This |
|
helps to avoid critical errors when upgrading. |
Use object directories: |
Use object directories: |
This helps to keep stale object |
This helps to keep stale object |
files from polluting the build if a Makefile "forgets" |
files from polluting the build if a Makefile "forgets" |
Line 23 Hints for a more successful build: |
|
Line 168 Hints for a more successful build: |
|
same source tree for multiple machines. |
same source tree for multiple machines. |
To use object directories: |
To use object directories: |
a) cd /usr/src ; make cleandir |
a) cd /usr/src ; make cleandir |
b) Add "OBJMACHINE=obj.<arch>" to /etc/mk.conf |
b) Add "OBJMACHINE=yes" to /etc/mk.conf |
c) cd /usr/src ; make obj |
c) Add "MKOBJDIRS=yes" to /etc/mk.conf |
d) cd /usr/src ; make build |
d) cd /usr/src ; make build |
|
Note that running "make obj" in a directory will create |
|
in obj.$MACHINE directory. |
Build to a DESTDIR: |
Build to a DESTDIR: |
This helps to keep old |
This helps to keep old |
installed files (especially libraries) from interfering |
installed files (especially libraries) from interfering |
with the new build. |
with the new build. |
To build to a DESTDIR, set the DESTDIR environment |
To build to a DESTDIR, set the DESTDIR environment |
variable before running make build. |
variable before running make build. It should be set to |
|
the pathname of an initially empty directory. |
Problems: you might need to update critical utilities |
Problems: you might need to update critical utilities |
without using DESTDIR since nothing is executed |
without using DESTDIR since nothing is executed |
from what is installed in DESTDIR. |
from what is installed in DESTDIR. |
Line 67 something like the following: |
|
Line 215 something like the following: |
|
Failsafe rebuild of the entire tree: |
Failsafe rebuild of the entire tree: |
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
If you really want to make sure the source tree is clean and |
If you really want to make sure the source tree is clean and |
ready for a build try the following: |
ready for a build try the following. Note that sourcing /etc/mk.conf |
|
(a make(1) Makefile) in this manner is not right, and will not work |
|
for anyone who uses any make(1) features in /etc/mk.conf. |
|
|
---cut here--- |
---cut here--- |
#!/bin/sh |
#!/bin/sh |
Line 96 cd $BSDSRCDIR && make cleandir |
|
Line 246 cd $BSDSRCDIR && make cleandir |
|
Critical utilities: |
Critical utilities: |
^^^^^^^^^^^^^^^^^^^ |
^^^^^^^^^^^^^^^^^^^ |
gnu/usr.bin/egcs |
gnu/usr.bin/egcs |
|
usr.bin/compile_et |
usr.bin/make |
usr.bin/make |
usr.bin/yacc |
usr.bin/yacc |
usr.bin/lex |
usr.bin/lex |
crypto-*/usr.bin/compile_et |
usr.bin/xlint |
crypto-*/usr.bin/make_cmds |
usr.sbin/config |
|
|
Other problems and possibly solutions: |
Other problems and possible solutions: |
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
Symptom:Unreasonable compiler errors. |
Symptom:Unreasonable compiler errors. |
Fix: Rebuild gnu/usr.bin/egcs |
Fix: Rebuild gnu/usr.bin/egcs |
|
|
Symptom:Complaints involving a Makefile. |
Symptom:Complaints involving a Makefile. |
|
Fix: Rebuild usr.bin/make: |
|
cd usr.bin/make && make && make install |
|
Or, a failsafe method if that doesn't work: |
|
cd usr.bin/make && cc *.c */*.c -I . -o make && mv make /usr/bin |
|
|
Fix: Make sure .mk files are up to date. |
Fix: Make sure .mk files are up to date. |
cd share/mk && make install |
cd share/mk && make install |
Fix: Rebuild usr.bin/make |
|
|
Symptom:Kernel `config' fails to configure any kernel, including GENERIC. |
|
Fix: Rebuild usr.sbin/config |
|
|
Symptom: |
Symptom: |
Fix: Rebuild usr.bin/yacc |
Fix: Rebuild usr.bin/yacc |
Line 120 Fix: Rebuild usr.bin/lex |
|
Line 278 Fix: Rebuild usr.bin/lex |
|
|
|
Symptom: |
Symptom: |
Fix: rm /usr/lib/libbfd.a |
Fix: rm /usr/lib/libbfd.a |
|
|
|
Symptom:Obsolete intermediate files are used during compilation |
|
Fix: Try the following sequence of commands in the directory in question. |
|
make cleandir; rm `make print-objdir`; make cleandir; make obj |
|
(If you built the tree without "make obj" in the past, obsolete files |
|
may remain. The command tries to clean everything up) |
|
|
|
Symptom:.../sysinst/run.c:xx: warning: initialization from incompatible pointer type |
|
Fix: Rebuild and install usr.bin/menuc |
|
|
|
Symptom:mklocale not found during build in share/locale/ctype |
|
Fix: Build and install usr.bin/mklocale |
|
|
|
Symptom:undefined reference to `__assert13' |
|
Fix: Rebuild and install lib/libc |
|
|
|
Symptom:usr.sbin/config fails to build. |
|
Fix: Try building with -DMAKE_BOOTSTRAP added to CFLAGS in Makefile. |
|
|
|
Symptom:undefined reference to `getprogname' or `setprogname' |
|
Fix: Rebuild and install lib/libc |
|
|
|
Symptom:lint does not understand the '-X' option |
|
Fix: May need to build & install libs with NOLINT=1 before rebuilding lint |