1 1.1 abs $NetBSD: UPDATING,v 1.1 2000/08/17 20:17:43 abs Exp $ 2 1.1 abs 3 1.1 abs This file is intended to be a brief introduction to the build 4 1.1 abs process and a reference on what to do if something doesn't work. 5 1.1 abs 6 1.1 abs For a more detailed description see Makefile. 7 1.1 abs 8 1.1 abs Recent changes: 9 1.1 abs ^^^^^^^^^^^^^^^ 10 1.1 abs 11 1.1 abs 20000623: 12 1.1 abs MKCRYPTO and friends added to share/mk/bsd.own.mk. 13 1.1 abs 'cd share/mk ; make install' needed before make build. 14 1.1 abs 15 1.1 abs 16 1.1 abs Hints for a more successful build: 17 1.1 abs ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 18 1.1 abs Use object directories: 19 1.1 abs This helps to keep stale object 20 1.1 abs files from polluting the build if a Makefile "forgets" 21 1.1 abs about one. It also makes it easier to clean up after 22 1.1 abs a build. It's also necessary if you want to use the 23 1.1 abs same source tree for multiple machines. 24 1.1 abs To use object directories: 25 1.1 abs a) cd /usr/src ; make cleandir 26 1.1 abs b) Add "OBJMACHINE=obj.<arch>" to /etc/mk.conf 27 1.1 abs c) cd /usr/src ; make obj 28 1.1 abs d) cd /usr/src ; make build 29 1.1 abs Build to a DESTDIR: 30 1.1 abs This helps to keep old 31 1.1 abs installed files (especially libraries) from interfering 32 1.1 abs with the new build. 33 1.1 abs To build to a DESTDIR, set the DESTDIR environment 34 1.1 abs variable before running make build. 35 1.1 abs Problems: you might need to update critical utilities 36 1.1 abs without using DESTDIR since nothing is executed 37 1.1 abs from what is installed in DESTDIR. 38 1.1 abs (See critical utils, below) 39 1.1 abs Build often: 40 1.1 abs This keeps critical utilities current enough to not choke 41 1.1 abs on any other part of the source tree that depends on up to 42 1.1 abs date functionality. 43 1.1 abs 44 1.1 abs What to do if things don't work: 45 1.1 abs ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 46 1.1 abs When things don't work there is usually a few things that commonly 47 1.1 abs should be done. 48 1.1 abs 1) make includes 49 1.1 abs This should be done automatically by make build. 50 1.1 abs 2) cd share/mk && make install 51 1.1 abs Again, automatically done by make build. 52 1.1 abs 53 1.1 abs Failsafe rebuild of a small part of the tree: 54 1.1 abs ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 55 1.1 abs To make sure you rebuild something correctly you want to do 56 1.1 abs something like the following: 57 1.1 abs 1) Make sure the includes and .mk files are up to date. 58 1.1 abs 2) Make sure any program used to build the particular 59 1.1 abs utility is up to date. (yacc, lex, etc...) 60 1.1 abs 3) cd ...path/to/util... 61 1.1 abs make cleandir 62 1.1 abs rm ...all obj directories... 63 1.1 abs make cleandir # yes, again 64 1.1 abs make obj 65 1.1 abs make depend && make 66 1.1 abs 67 1.1 abs Failsafe rebuild of the entire tree: 68 1.1 abs ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 69 1.1 abs If you really want to make sure the source tree is clean and 70 1.1 abs ready for a build try the following: 71 1.1 abs 72 1.1 abs ---cut here--- 73 1.1 abs #!/bin/sh 74 1.1 abs . /etc/mk.conf 75 1.1 abs 76 1.1 abs if [ -z $BSDSRCDIR ] ; then 77 1.1 abs BSDSRCDIR=/usr/src 78 1.1 abs fi 79 1.1 abs if [ \! -d $BSDSRCDIR ] ; then 80 1.1 abs echo Unable to find sources 81 1.1 abs exit 1 82 1.1 abs fi 83 1.1 abs find $BSDSRCDIR -name \*.o -o -name obj.\* -o -name obj -exec rm \{\} \; 84 1.1 abs 85 1.1 abs if [ -z $BSDOBJDIR ] ; then 86 1.1 abs BSDOBJDIR=/usr/obj 87 1.1 abs fi 88 1.1 abs if [ -d $BSDOBJDIR ] ; then 89 1.1 abs rm -rf $BSDOBJDIR 90 1.1 abs fi 91 1.1 abs 92 1.1 abs cd $BSDSRCDIR && make cleandir 93 1.1 abs 94 1.1 abs ---cut here--- 95 1.1 abs 96 1.1 abs Critical utilities: 97 1.1 abs ^^^^^^^^^^^^^^^^^^^ 98 1.1 abs gnu/usr.bin/egcs 99 1.1 abs usr.bin/make 100 1.1 abs usr.bin/yacc 101 1.1 abs usr.bin/lex 102 1.1 abs crypto-*/usr.bin/compile_et 103 1.1 abs crypto-*/usr.bin/make_cmds 104 1.1 abs 105 1.1 abs Other problems and possibly solutions: 106 1.1 abs ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 107 1.1 abs Symptom:Unreasonable compiler errors. 108 1.1 abs Fix: Rebuild gnu/usr.bin/egcs 109 1.1 abs 110 1.1 abs Symptom:Complaints involving a Makefile. 111 1.1 abs Fix: Make sure .mk files are up to date. 112 1.1 abs cd share/mk && make install 113 1.1 abs Fix: Rebuild usr.bin/make 114 1.1 abs 115 1.1 abs Symptom: 116 1.1 abs Fix: Rebuild usr.bin/yacc 117 1.1 abs 118 1.1 abs Symptom: 119 1.1 abs Fix: Rebuild usr.bin/lex 120 1.1 abs 121 1.1 abs Symptom: 122 1.1 abs Fix: rm /usr/lib/libbfd.a 123