| @@ -1,621 +1,622 @@ | | | @@ -1,621 +1,622 @@ |
1 | $NetBSD: UPDATING,v 1.239 2012/09/15 18:03:42 dholland Exp $ | | 1 | $NetBSD: UPDATING,v 1.240 2012/09/17 05:56:27 dholland Exp $ |
2 | | | 2 | |
3 | This file (UPDATING) is intended to be a brief reference to recent | | 3 | This file (UPDATING) is intended to be a brief reference to recent |
4 | changes that might cause problems in the build process, and a guide for | | 4 | changes that might cause problems in the build process, and a guide for |
5 | what to do if something doesn't work. | | 5 | what to do if something doesn't work. |
6 | | | 6 | |
7 | For a more detailed description of the recommended way to build NetBSD | | 7 | For a more detailed description of the recommended way to build NetBSD |
8 | using build.sh, see the BUILDING file. | | 8 | using build.sh, see the BUILDING file. |
9 | | | 9 | |
10 | Note that much of the advice in this UPDATING file was written before | | 10 | Note that much of the advice in this UPDATING file was written before |
11 | build.sh existed. Nevertheless, the advice here may be useful for | | 11 | build.sh existed. Nevertheless, the advice here may be useful for |
12 | working around specific problems with build.sh. | | 12 | working around specific problems with build.sh. |
13 | | | 13 | |
14 | See also: BUILDING, build.sh, Makefile. | | 14 | See also: BUILDING, build.sh, Makefile. |
15 | | | 15 | |
16 | Recent changes: | | 16 | Recent changes: |
17 | ^^^^^^^^^^^^^^^ | | 17 | ^^^^^^^^^^^^^^^ |
18 | | | 18 | |
19 | 20120726: | | 19 | 20120726: |
20 | The update of openssl requires cleaning both the openssl build | | 20 | The update of openssl requires cleaning both the openssl build |
21 | directory and DESTDIR; update builds done without taking these | | 21 | directory and DESTDIR. *Even non-update builds require cleaning |
22 | steps may fail, or if not, have been observed to cause | | 22 | DESTDIR.* Builds done without taking these steps may fail, or in |
23 | third-party software to link incorrectly. | | 23 | some cases may succeed and install broken openssl libraries that |
| | | 24 | cause third-party software to link incorrectly and/or crash. |
24 | | | 25 | |
25 | 20120507: | | 26 | 20120507: |
26 | The database schema for makemandb was changed. You will | | 27 | The database schema for makemandb was changed. You will |
27 | need to update the database using 'makemandb -f' or wait | | 28 | need to update the database using 'makemandb -f' or wait |
28 | for the next weekly run to fix it. | | 29 | for the next weekly run to fix it. |
29 | | | 30 | |
30 | 20120319: | | 31 | 20120319: |
31 | sys/conf/Makefile.kern.inc has been modified to adjust the | | 32 | sys/conf/Makefile.kern.inc has been modified to adjust the |
32 | size of db_symtab automatically. You need to update dbsym in | | 33 | size of db_symtab automatically. You need to update dbsym in |
33 | your $TOOLDIR to build kernels with options SYMTAB_SPACE. If | | 34 | your $TOOLDIR to build kernels with options SYMTAB_SPACE. If |
34 | you don't want this behavior, add AUTO_SYMTAB_SPACE=no to your | | 35 | you don't want this behavior, add AUTO_SYMTAB_SPACE=no to your |
35 | mk.conf. | | 36 | mk.conf. |
36 | | | 37 | |
37 | 20120216: | | 38 | 20120216: |
38 | Default for MKCATPAGES changed to NO. Update builds will fail | | 39 | Default for MKCATPAGES changed to NO. Update builds will fail |
39 | unless DESTDIR is cleaned manually. If you built between 20120207 | | 40 | unless DESTDIR is cleaned manually. If you built between 20120207 |
40 | and 20120216, daily and weekly could have created an unreadable | | 41 | and 20120216, daily and weekly could have created an unreadable |
41 | /var/db/man.db index for apropos. Running makemandb -f or | | 42 | /var/db/man.db index for apropos. Running makemandb -f or |
42 | the next run of weekly will fix it. | | 43 | the next run of weekly will fix it. |
43 | | | 44 | |
44 | 20111227: | | 45 | 20111227: |
45 | If you built between 20111225 and 20111227 you need to remove | | 46 | If you built between 20111225 and 20111227 you need to remove |
46 | /usr/lib/libpam.so.4* and /usr/lib/security/*.so.4, since the | | 47 | /usr/lib/libpam.so.4* and /usr/lib/security/*.so.4, since the |
47 | bump has been reverted. | | 48 | bump has been reverted. |
48 | | | 49 | |
49 | 20111125: | | 50 | 20111125: |
50 | The "rnd" pseudodevice has been added to sys/conf/std, which | | 51 | The "rnd" pseudodevice has been added to sys/conf/std, which |
51 | means it should no longer be explicitly listed in kernel | | 52 | means it should no longer be explicitly listed in kernel |
52 | configuration files. The line "pseudo-device rnd" should be | | 53 | configuration files. The line "pseudo-device rnd" should be |
53 | removed from any custom kernel config files users may have. | | 54 | removed from any custom kernel config files users may have. |
54 | | | 55 | |
55 | 20111119: | | 56 | 20111119: |
56 | A problem with the datastructures used by the rndctl(8) | | 57 | A problem with the datastructures used by the rndctl(8) |
57 | utility (pointers in datastructures in an array, making 32->64 | | 58 | utility (pointers in datastructures in an array, making 32->64 |
58 | bit compatibility very painful) has been fixed in a | | 59 | bit compatibility very painful) has been fixed in a |
59 | non-backwards-compatible way. If you replace your kernel, | | 60 | non-backwards-compatible way. If you replace your kernel, |
60 | replace your rndctl executable too. | | 61 | replace your rndctl executable too. |
61 | | | 62 | |
62 | 20111001: | | 63 | 20111001: |
63 | the prop_*_send_syscall() functions from proplib(3) have been | | 64 | the prop_*_send_syscall() functions from proplib(3) have been |
64 | changed and their new version is not backward compatible with the old | | 65 | changed and their new version is not backward compatible with the old |
65 | one. So ensure that all consumers of these functions (currently: | | 66 | one. So ensure that all consumers of these functions (currently: |
66 | quota2 code and its tests) are updated together with the new lib. | | 67 | quota2 code and its tests) are updated together with the new lib. |
67 | | | 68 | |
68 | 20110817: | | 69 | 20110817: |
69 | sparc has been changed to use GCC 4.5.3, so any objdir or | | 70 | sparc has been changed to use GCC 4.5.3, so any objdir or |
70 | DESTDIR for them should be deleted before updating. | | 71 | DESTDIR for them should be deleted before updating. |
71 | | | 72 | |
72 | 20110806: | | 73 | 20110806: |
73 | i386 and amd64 have been changed to use GCC 4.5.3, so any | | 74 | i386 and amd64 have been changed to use GCC 4.5.3, so any |
74 | objdir or DESTDIR for them should be deleted before updating. | | 75 | objdir or DESTDIR for them should be deleted before updating. |
75 | | | 76 | |
76 | 20110805: | | 77 | 20110805: |
77 | The update to GCC 4.5.3 requires a non-trivial portion of | | 78 | The update to GCC 4.5.3 requires a non-trivial portion of |
78 | the tree to be cleaned. Best to delete both objdir and | | 79 | the tree to be cleaned. Best to delete both objdir and |
79 | DESTDIR before running this update. So far, only the | | 80 | DESTDIR before running this update. So far, only the |
80 | sparc64, mips and powerpc platforms have changed. | | 81 | sparc64, mips and powerpc platforms have changed. |
81 | | | 82 | |
82 | 20110803: | | 83 | 20110803: |
83 | The layout of external/public-domain/xz has changed. To do an | | 84 | The layout of external/public-domain/xz has changed. To do an |
84 | update build you will have to remove the contents of the OBJDIR | | 85 | update build you will have to remove the contents of the OBJDIR |
85 | for external/public-domain/xz/bin by hand as the xz entry there | | 86 | for external/public-domain/xz/bin by hand as the xz entry there |
86 | is now a directory. | | 87 | is now a directory. |
87 | | | 88 | |
88 | 20110410: | | 89 | 20110410: |
89 | The configuration of src/tools/gcc has changed. To do an | | 90 | The configuration of src/tools/gcc has changed. To do an |
90 | update build you have to clean both tools/binutils and | | 91 | update build you have to clean both tools/binutils and |
91 | tools/gcc by hand. | | 92 | tools/gcc by hand. |
92 | | | 93 | |
93 | 20110328: | | 94 | 20110328: |
94 | Building the Xorg binary was moved into a subdirectory to fix | | 95 | Building the Xorg binary was moved into a subdirectory to fix |
95 | ordering issues with "make all". It may be necessary to remove | | 96 | ordering issues with "make all". It may be necessary to remove |
96 | the OBJDIR for external/mit/xorg/server/xorg-server/hw/xfree86 | | 97 | the OBJDIR for external/mit/xorg/server/xorg-server/hw/xfree86 |
97 | if your update build fails, as the "Xorg" entry there is now a | | 98 | if your update build fails, as the "Xorg" entry there is now a |
98 | directory. | | 99 | directory. |
99 | | | 100 | |
100 | 20110121: | | 101 | 20110121: |
101 | Assembler files no longer use -traditional-cpp. This can break | | 102 | Assembler files no longer use -traditional-cpp. This can break |
102 | the build of individual parts of the tree. This is handled | | 103 | the build of individual parts of the tree. This is handled |
103 | correctly by build.sh. Manual builds have to update /usr/share/mk | | 104 | correctly by build.sh. Manual builds have to update /usr/share/mk |
104 | and re-run config(1) for any kernel configurations as needed. | | 105 | and re-run config(1) for any kernel configurations as needed. |
105 | | | 106 | |
106 | 20101217: | | 107 | 20101217: |
107 | The tcpdump(8) program was changed to drop privileges and chroot(2) | | 108 | The tcpdump(8) program was changed to drop privileges and chroot(2) |
108 | by default. It may be necessary to manually update passwd(5) and | | 109 | by default. It may be necessary to manually update passwd(5) and |
109 | group(5) in order to make the program work with existing setups. | | 110 | group(5) in order to make the program work with existing setups. |
110 | | | 111 | |
111 | 20101125: | | 112 | 20101125: |
112 | The latest changes to setenv(3) dissallow setting environment | | 113 | The latest changes to setenv(3) dissallow setting environment |
113 | variables with names that contain '='. Revision 1.18 of env.c | | 114 | variables with names that contain '='. Revision 1.18 of env.c |
114 | assumed that this was allowed. Installing a new libc with an | | 115 | assumed that this was allowed. Installing a new libc with an |
115 | old copy of /usr/bin/env causes env x=1 printenv | grep x= to | | 116 | old copy of /usr/bin/env causes env x=1 printenv | grep x= to |
116 | break which affects the autoconf tests for dependency finding, | | 117 | break which affects the autoconf tests for dependency finding, |
117 | so building gcc will end up printing: | | 118 | so building gcc will end up printing: |
118 | checking dependency style of gcc... none | | 119 | checking dependency style of gcc... none |
119 | configure: error: no usable dependency style found | | 120 | configure: error: no usable dependency style found |
120 | Fix it by rebuilding and re-installing env. | | 121 | Fix it by rebuilding and re-installing env. |
121 | | | 122 | |
122 | 20101119: | | 123 | 20101119: |
123 | Recent Xorg updates in xsrc/external/mit/ may cause various build | | 124 | Recent Xorg updates in xsrc/external/mit/ may cause various build |
124 | or run-time problems. Delete your entire DESTDIR and OBJDIR if you | | 125 | or run-time problems. Delete your entire DESTDIR and OBJDIR if you |
125 | have any build problems with xsrc, or problems with mismatched | | 126 | have any build problems with xsrc, or problems with mismatched |
126 | versions between xorg-server and drivers. | | 127 | versions between xorg-server and drivers. |
127 | | | 128 | |
128 | 20100604: | | 129 | 20100604: |
129 | The update of ATF to 0.9 causes old tests written in shell to fail | | 130 | The update of ATF to 0.9 causes old tests written in shell to fail |
130 | unless they are rebuilt. If you are building with MKUPDATE=yes, | | 131 | unless they are rebuilt. If you are building with MKUPDATE=yes, |
131 | you need to clean the src/external/bsd/atf/tests/ and the src/tests/ | | 132 | you need to clean the src/external/bsd/atf/tests/ and the src/tests/ |
132 | trees by hand. | | 133 | trees by hand. |
133 | | | 134 | |
134 | 20100522: | | 135 | 20100522: |
135 | Recent Xorg updates in xsrc/external/mit/ will cause various build | | 136 | Recent Xorg updates in xsrc/external/mit/ will cause various build |
136 | problems. Delete your entire DESTDIR and OBJDIR if you have any | | 137 | problems. Delete your entire DESTDIR and OBJDIR if you have any |
137 | build problems with xsrc. | | 138 | build problems with xsrc. |
138 | | | 139 | |
139 | 20100522: | | 140 | 20100522: |
140 | private section of <ctype.h> was splitted, and now mklocale(1) | | 141 | private section of <ctype.h> was splitted, and now mklocale(1) |
141 | include ctype_local.h, so you have to make cleandir in tools/mklocale. | | 142 | include ctype_local.h, so you have to make cleandir in tools/mklocale. |
142 | | | 143 | |
143 | 20100520: | | 144 | 20100520: |
144 | The location of the xkb compiled descriptions has changed. Please | | 145 | The location of the xkb compiled descriptions has changed. Please |
145 | remove usr/X11R7/lib/X11/xkb/compiled from your $DESTDIR. | | 146 | remove usr/X11R7/lib/X11/xkb/compiled from your $DESTDIR. |
146 | | | 147 | |
147 | 20100222: | | 148 | 20100222: |
148 | The shared objects file extension has been changed from .so to | | 149 | The shared objects file extension has been changed from .so to |
149 | .pico, in order to avoid conflicts with shared libraries names | | 150 | .pico, in order to avoid conflicts with shared libraries names |
150 | libXX.so. All now stale regular .so files can be removed from | | 151 | libXX.so. All now stale regular .so files can be removed from |
151 | your object directories. | | 152 | your object directories. |
152 | | | 153 | |
153 | 20100204: | | 154 | 20100204: |
154 | The termcap database has been removed from the sources, | | 155 | The termcap database has been removed from the sources, |
155 | but has not been marked obsolete so it is not removed | | 156 | but has not been marked obsolete so it is not removed |
156 | from the system when upgrading. | | 157 | from the system when upgrading. |
157 | As such, you will need to remove them from your object | | 158 | As such, you will need to remove them from your object |
158 | and destination directories. | | 159 | and destination directories. |
159 | | | 160 | |
160 | 20091101: | | 161 | 20091101: |
161 | After updating, it may be necessary to make the 'cleandir' | | 162 | After updating, it may be necessary to make the 'cleandir' |
162 | target in src/tools/yacc/ and in src/usr.bin/yacc/ before a | | 163 | target in src/tools/yacc/ and in src/usr.bin/yacc/ before a |
163 | 'build.sh -u tools' or 'build.sh -u distribution'. Ditto | | 164 | 'build.sh -u tools' or 'build.sh -u distribution'. Ditto |
164 | src/tools/lex/ and src/usr.bin/lex/. | | 165 | src/tools/lex/ and src/usr.bin/lex/. |
165 | | | 166 | |
166 | 20091001: | | 167 | 20091001: |
167 | On amd64 you must rebuild tools (to get the new binutils) | | 168 | On amd64 you must rebuild tools (to get the new binutils) |
168 | before building a kernel, or the build fails on cpufunc.S. | | 169 | before building a kernel, or the build fails on cpufunc.S. |
169 | | | 170 | |
170 | 20091001: | | 171 | 20091001: |
171 | An error will create a ./usr/X11R7/lib/X11/xkb/compiled/xkb | | 172 | An error will create a ./usr/X11R7/lib/X11/xkb/compiled/xkb |
172 | symlink, failing the build. Delete the link, and the subdir | | 173 | symlink, failing the build. Delete the link, and the subdir |
173 | it is in, and retry your build. | | 174 | it is in, and retry your build. |
174 | | | 175 | |
175 | 20090718: | | 176 | 20090718: |
176 | libc build changed so that strchr() provides the extra entry | | 177 | libc build changed so that strchr() provides the extra entry |
177 | point for index(). Update build of libc.a (and libc_pic.a) | | 178 | point for index(). Update build of libc.a (and libc_pic.a) |
178 | may fail because the archive contains the unwanted index.o. | | 179 | may fail because the archive contains the unwanted index.o. |
179 | (Similarly for strrchr() and rindex().) | | 180 | (Similarly for strrchr() and rindex().) |
180 | | | 181 | |
181 | 20090709: | | 182 | 20090709: |
182 | Native Xorg was upgraded again. Builds will probably fail again | | 183 | Native Xorg was upgraded again. Builds will probably fail again |
183 | without a clean objdir, at least for src/external/mit/xorg. | | 184 | without a clean objdir, at least for src/external/mit/xorg. |
184 | | | 185 | |
185 | 20090616: | | 186 | 20090616: |
186 | Native Xorg was upgraded. Builds will need a clean objdir for | | 187 | Native Xorg was upgraded. Builds will need a clean objdir for |
187 | src/external/mit/xorg. Upgrading a system from sets will not | | 188 | src/external/mit/xorg. Upgrading a system from sets will not |
188 | work properly yet as the /usr/X11R7/lib/X11/xkb/symbols/pc | | 189 | work properly yet as the /usr/X11R7/lib/X11/xkb/symbols/pc |
189 | subdirectory has been changed into a file, and this needs to | | 190 | subdirectory has been changed into a file, and this needs to |
190 | be manually "rm -r"'ed before installing xbase.tgz. | | 191 | be manually "rm -r"'ed before installing xbase.tgz. |
191 | | | 192 | |
192 | 20090501: | | 193 | 20090501: |
193 | Several new functions were added to string.h/libc, and this | | 194 | Several new functions were added to string.h/libc, and this |
194 | can cause autoconf problems during the tool build for people | | 195 | can cause autoconf problems during the tool build for people |
195 | who fail to clean out their tools objects properly. If you | | 196 | who fail to clean out their tools objects properly. If you |
196 | note messages about stpcpy, stpncpy or strnlen accompanying a | | 197 | note messages about stpcpy, stpncpy or strnlen accompanying a |
197 | failure during the tool build, clean out all your tools | | 198 | failure during the tool build, clean out all your tools |
198 | objects and start again. | | 199 | objects and start again. |
199 | | | 200 | |
200 | 20090325: | | 201 | 20090325: |
201 | The i386 port was switched to i486 default toolchain. This requires | | 202 | The i386 port was switched to i486 default toolchain. This requires |
202 | cleaning your src/tools directory and $TOOLDIR and rebuilding them. | | 203 | cleaning your src/tools directory and $TOOLDIR and rebuilding them. |
203 | | | 204 | |
204 | 20090126: | | 205 | 20090126: |
205 | The __posix_fadvise50 system call changed assembly stub type. You | | 206 | The __posix_fadvise50 system call changed assembly stub type. You |
206 | need to 'rm -f __posix_fadvise50.*' in the libc build directory | | 207 | need to 'rm -f __posix_fadvise50.*' in the libc build directory |
207 | to avoid using the old assembly stub. | | 208 | to avoid using the old assembly stub. |
208 | | | 209 | |
209 | 20090202: | | 210 | 20090202: |
210 | pkg_install now depends on the pkgdb cache for automatic conflict | | 211 | pkg_install now depends on the pkgdb cache for automatic conflict |
211 | detection. It is recommented to rebuild the cache with | | 212 | detection. It is recommented to rebuild the cache with |
212 | ``pkg_admin rebuild''. | | 213 | ``pkg_admin rebuild''. |
213 | | | 214 | |
214 | 20090110: | | 215 | 20090110: |
215 | time_t and dev_t have been bumped to 64 bit quantities. To upgrade: | | 216 | time_t and dev_t have been bumped to 64 bit quantities. To upgrade: |
216 | 1. Make sure your kernel has COMPAT_50 in it. Build and install. | | 217 | 1. Make sure your kernel has COMPAT_50 in it. Build and install. |
217 | This is needed even in the MODULAR kernel because there is | | 218 | This is needed even in the MODULAR kernel because there is |
218 | conditionally compiled code in rtsock.c. | | 219 | conditionally compiled code in rtsock.c. |
219 | 2. make sure build.sh completes and the binaries in a chroot work | | 220 | 2. make sure build.sh completes and the binaries in a chroot work |
220 | before installing. | | 221 | before installing. |
221 | 3. If you don't use build.sh and you build directly to root, and | | 222 | 3. If you don't use build.sh and you build directly to root, and |
222 | your build breaks in the middle, don't despair. Make sure headers | | 223 | your build breaks in the middle, don't despair. Make sure headers |
223 | are installed properly, and start building libraries first libc | | 224 | are installed properly, and start building libraries first libc |
224 | and libutil, install them and then continue building all the | | 225 | and libutil, install them and then continue building all the |
225 | libraries in src/lib and src/gnu/lib and install them. Once | | 226 | libraries in src/lib and src/gnu/lib and install them. Once |
226 | the new libraries are installed, you can restart the build. | | 227 | the new libraries are installed, you can restart the build. |
227 | 4. If you compile packages and you notice link time warnings, | | 228 | 4. If you compile packages and you notice link time warnings, |
228 | rebuild the required packages to update their shared libraries. | | 229 | rebuild the required packages to update their shared libraries. |
229 | Any package you rebuild will require rebuilding all the packages | | 230 | Any package you rebuild will require rebuilding all the packages |
230 | that depend on it. | | 231 | that depend on it. |
231 | 5. Next time you run pwd_mkdb with the new binary, the file | | 232 | 5. Next time you run pwd_mkdb with the new binary, the file |
232 | will be upgraded and it will not be backwards compatible. | | 233 | will be upgraded and it will not be backwards compatible. |
233 | 6. The utmpx/wtmpx files (/var/run/utmpx and /var/log/wtmpx, see | | 234 | 6. The utmpx/wtmpx files (/var/run/utmpx and /var/log/wtmpx, see |
234 | lastlogx(5)) have been versioned, and there is a heuristic | | 235 | lastlogx(5)) have been versioned, and there is a heuristic |
235 | for utmp. You are better off removing the old files after | | 236 | for utmp. You are better off removing the old files after |
236 | upgrading. The automated clearing of /var/run during | | 237 | upgrading. The automated clearing of /var/run during |
237 | boot, and the automated rotating of files in /var/log by | | 238 | boot, and the automated rotating of files in /var/log by |
238 | newsyslog(8), may mean that you do not have to remove the | | 239 | newsyslog(8), may mean that you do not have to remove the |
239 | files manually. | | 240 | files manually. |
240 | 7. The optional accounting file (/var/account/acct, see | | 241 | 7. The optional accounting file (/var/account/acct, see |
241 | accton(8)) has not been versioned, and will need to be | | 242 | accton(8)) has not been versioned, and will need to be |
242 | removed. The automatic rotation of the accounting file by | | 243 | removed. The automatic rotation of the accounting file by |
243 | /etc/daily limits the bad consequences of failure to remove | | 244 | /etc/daily limits the bad consequences of failure to remove |
244 | the file. | | 245 | the file. |
245 | 8. Application software that writes time_t to binary files on | | 246 | 8. Application software that writes time_t to binary files on |
246 | disk will break or need attention. Most notably: if you are | | 247 | disk will break or need attention. Most notably: if you are |
247 | using PostgreSQL < 8.4, you need to dump your databases, | | 248 | using PostgreSQL < 8.4, you need to dump your databases, |
248 | rebuild PostgreSQL with the new time_t, then restore. | | 249 | rebuild PostgreSQL with the new time_t, then restore. |
249 | | | 250 | |
250 | 20081219: | | 251 | 20081219: |
251 | config(1) has been updated, and one of the files it creates - | | 252 | config(1) has been updated, and one of the files it creates - |
252 | swapnetbsd.o - has changed format. You need to rebuild config | | 253 | swapnetbsd.o - has changed format. You need to rebuild config |
253 | (done automatically by build.sh) and then you need to rerun | | 254 | (done automatically by build.sh) and then you need to rerun |
254 | config on all kernel configuration files before rebuilding those | | 255 | config on all kernel configuration files before rebuilding those |
255 | kernels. | | 256 | kernels. |
256 | | | 257 | |
257 | 20081205: | | 258 | 20081205: |
258 | If you build with MKX11=no, you should remove /etc/rc.d/xdm and | | 259 | If you build with MKX11=no, you should remove /etc/rc.d/xdm and |
259 | /etc/rc.d/xfs from DESTDIR because those files were moved to the xetc | | 260 | /etc/rc.d/xfs from DESTDIR because those files were moved to the xetc |
260 | set and will appear as extra files for MKX11=no update builds. | | 261 | set and will appear as extra files for MKX11=no update builds. |
261 | | | 262 | |
262 | 20081122: | | 263 | 20081122: |
263 | On i386, various kernel options(4) in GENERIC including | | 264 | On i386, various kernel options(4) in GENERIC including |
264 | file systems have been disabled and moved into kernel modules. | | 265 | file systems have been disabled and moved into kernel modules. |
265 | Before trying a new GENERIC kernel, you have to prepare the | | 266 | Before trying a new GENERIC kernel, you have to prepare the |
266 | following files as well as a new GENERIC kernel: | | 267 | following files as well as a new GENERIC kernel: |
267 | | | 268 | |
268 | - build and install kernel modules from src/sys/modules | | 269 | - build and install kernel modules from src/sys/modules |
269 | | | 270 | |
270 | - install the latest bootloader, which will load a module | | 271 | - install the latest bootloader, which will load a module |
271 | for the file system from which the kernel is loaded automatically | | 272 | for the file system from which the kernel is loaded automatically |
272 | | | 273 | |
273 | If you have to load your kernel from a file system which is not of | | 274 | If you have to load your kernel from a file system which is not of |
274 | the same type as the root file system, you have to load the necessary | | 275 | the same type as the root file system, you have to load the necessary |
275 | file system module manually on the boot prompt or in the boot.cfg file. | | 276 | file system module manually on the boot prompt or in the boot.cfg file. |
276 | | | 277 | |
277 | 20080827: | | 278 | 20080827: |
278 | If you built and installed a libc from sources between | | 279 | If you built and installed a libc from sources between |
279 | 2008/08/20 and 2008/08/26 you got a broken strtouq(3) | | 280 | 2008/08/20 and 2008/08/26 you got a broken strtouq(3) |
280 | which results in false errors reported by lint(1). | | 281 | which results in false errors reported by lint(1). |
281 | Since this breaks the libc build itself, manual help is | | 282 | Since this breaks the libc build itself, manual help is |
282 | needed -- lint must be disabled temporarily, e.g.: | | 283 | needed -- lint must be disabled temporarily, e.g.: |
283 | $ (cd lib/libc && make MKLINT=no dependall install) | | 284 | $ (cd lib/libc && make MKLINT=no dependall install) |
284 | | | 285 | |
285 | 20080813: | | 286 | 20080813: |
286 | MKDEBUG build was broken because the .depend files did not know | | 287 | MKDEBUG build was broken because the .depend files did not know |
287 | about .go files. You need to remove all .depend files and rebuild. | | 288 | about .go files. You need to remove all .depend files and rebuild. |
288 | | | 289 | |
289 | 20080802: | | 290 | 20080802: |
290 | A regression in binary compatibility for pthread_mutex_t has | | 291 | A regression in binary compatibility for pthread_mutex_t has |
291 | been fixed. Unfortunately, the price is breaking compatibility | | 292 | been fixed. Unfortunately, the price is breaking compatibility |
292 | for -current. | | 293 | for -current. |
293 | | | 294 | |
294 | Threaded programs (using libpthread) and C++ programs (using | | 295 | Threaded programs (using libpthread) and C++ programs (using |
295 | libstdc++) compiled after 20070907 and before 20080802 need to | | 296 | libstdc++) compiled after 20070907 and before 20080802 need to |
296 | be recompiled. | | 297 | be recompiled. |
297 | | | 298 | |
298 | One way to find affected pkgsrc packages: | | 299 | One way to find affected pkgsrc packages: |
299 | | | 300 | |
300 | $ grep REQUIRES=/usr/lib/libpthread /var/db/pkg/*/+BUILD_INFO | | 301 | $ grep REQUIRES=/usr/lib/libpthread /var/db/pkg/*/+BUILD_INFO |
301 | $ grep REQUIRES=/usr/lib/libstdc++ /var/db/pkg/*/+BUILD_INFO | | 302 | $ grep REQUIRES=/usr/lib/libstdc++ /var/db/pkg/*/+BUILD_INFO |
302 | | | 303 | |
303 | 20080731: | | 304 | 20080731: |
304 | WAPBL (metadata journaling support) has been added, but at this | | 305 | WAPBL (metadata journaling support) has been added, but at this |
305 | time isn't backwards compatible with pre-WAPBL aware kernels | | 306 | time isn't backwards compatible with pre-WAPBL aware kernels |
306 | and userland (fsck_ffs in particular). Please make sure you | | 307 | and userland (fsck_ffs in particular). Please make sure you |
307 | don't use a journaled filesystem with an older kernel/userland, | | 308 | don't use a journaled filesystem with an older kernel/userland, |
308 | especially an uncleanly mounted journaled filesystem. WAPBL | | 309 | especially an uncleanly mounted journaled filesystem. WAPBL |
309 | also requires the super block to be in the UFS2 format. You | | 310 | also requires the super block to be in the UFS2 format. You |
310 | can use fsck_ffs -c 4 to update the superblock format. | | 311 | can use fsck_ffs -c 4 to update the superblock format. |
311 | | | 312 | |
312 | 20080721: | | 313 | 20080721: |
313 | Assembler warnings are now fatal if $WARNS>0 and $NOGCCERROR | | 314 | Assembler warnings are now fatal if $WARNS>0 and $NOGCCERROR |
314 | isn't defined. | | 315 | isn't defined. |
315 | | | 316 | |
316 | 20080531: | | 317 | 20080531: |
317 | The ioctl number of DRVSUSPENDDEV command on /dev/drvctl changed | | 318 | The ioctl number of DRVSUSPENDDEV command on /dev/drvctl changed |
318 | from 125 (conflicted with DRVCTLCOMMAND) to 129. The drvctl(8) | | 319 | from 125 (conflicted with DRVCTLCOMMAND) to 129. The drvctl(8) |
319 | utility needs to be rebuilt and reinstalled as older binaries | | 320 | utility needs to be rebuilt and reinstalled as older binaries |
320 | won't work correctly. The following sequence of commands: | | 321 | won't work correctly. The following sequence of commands: |
321 | | | 322 | |
322 | $ (cd sys/sys/ && nbmake-$arch includes) | | 323 | $ (cd sys/sys/ && nbmake-$arch includes) |
323 | $ (cd sbin/drvctl/ && nbmake-$arch clean) | | 324 | $ (cd sbin/drvctl/ && nbmake-$arch clean) |
324 | $ (cd sbin/drvctl/ && nbmake-$arch all) | | 325 | $ (cd sbin/drvctl/ && nbmake-$arch all) |
325 | | | 326 | |
326 | leaves new drvctl utility in sbin/drvctl build directory. | | 327 | leaves new drvctl utility in sbin/drvctl build directory. |
327 | | | 328 | |
328 | 20080503: | | 329 | 20080503: |
329 | The <bsd.lib.mk> variable MKPRIVATELIB was renamed to LIBISPRIVATE. | | 330 | The <bsd.lib.mk> variable MKPRIVATELIB was renamed to LIBISPRIVATE. |
330 | | | 331 | |
331 | 20080521: | | 332 | 20080521: |
332 | For a while, unprivileged UPDATE builds would fail to | | 333 | For a while, unprivileged UPDATE builds would fail to |
333 | succeed at the checkflist stage, complaining that | | 334 | succeed at the checkflist stage, complaining that |
334 | ${DESTDIR}/stand/<arch>/ did not exist. A fix for this | | 335 | ${DESTDIR}/stand/<arch>/ did not exist. A fix for this |
335 | problem was committed to share/mk/bsd.kmodule.mk, revision 1.9. | | 336 | problem was committed to share/mk/bsd.kmodule.mk, revision 1.9. |
336 | If you already hit this problem, update the .mk file, | | 337 | If you already hit this problem, update the .mk file, |
337 | remove ${DESTDIR}/stand/<arch>, and re-run the build. | | 338 | remove ${DESTDIR}/stand/<arch>, and re-run the build. |
338 | | | 339 | |
339 | 20080303: | | 340 | 20080303: |
340 | Linker warnings are now fatal if $WARNS>0. | | 341 | Linker warnings are now fatal if $WARNS>0. |
341 | | | 342 | |
342 | 20080126: | | 343 | 20080126: |
343 | The posix_fadvise system call has been changed from an assembly | | 344 | The posix_fadvise system call has been changed from an assembly |
344 | stub, to a c file that calls an assembly stub. You need to | | 345 | stub, to a c file that calls an assembly stub. You need to |
345 | 'rm -f posix_fadvise.* .depend' in the libc build directory to | | 346 | 'rm -f posix_fadvise.* .depend' in the libc build directory to |
346 | avoid using the old assembly stub. | | 347 | avoid using the old assembly stub. |
347 | | | 348 | |
348 | 20071209: | | 349 | 20071209: |
349 | The acpiec(4) driver has been split into two attachments. If you | | 350 | The acpiec(4) driver has been split into two attachments. If you |
350 | get ACPI errors before the attachment, please update your kernel | | 351 | get ACPI errors before the attachment, please update your kernel |
351 | configuration file appropriately or see GENERIC for more details. | | 352 | configuration file appropriately or see GENERIC for more details. |
352 | | | 353 | |
353 | 20071115: | | 354 | 20071115: |
354 | The it(4) driver has been renamed to itesio(4) and the old port | | 355 | The it(4) driver has been renamed to itesio(4) and the old port |
355 | argument specified in the kernel configuration file is not valid | | 356 | argument specified in the kernel configuration file is not valid |
356 | anymore. The itesio(4) driver now uses the Super I/O address port | | 357 | anymore. The itesio(4) driver now uses the Super I/O address port |
357 | rather than the EC address port. Please update your kernel | | 358 | rather than the EC address port. Please update your kernel |
358 | configuration file appropriately or see GENERIC for more details. | | 359 | configuration file appropriately or see GENERIC for more details. |
359 | | | 360 | |
360 | 20071028: | | 361 | 20071028: |
361 | The pccons(4) driver has been removed from the NetBSD/shark port. | | 362 | The pccons(4) driver has been removed from the NetBSD/shark port. |
362 | You need to update any custom kernel configuration file you have | | 363 | You need to update any custom kernel configuration file you have |
363 | to remove any references to pccons (which includes removing the | | 364 | to remove any references to pccons (which includes removing the |
364 | now useless XSERVER option) and replace them with the correct | | 365 | now useless XSERVER option) and replace them with the correct |
365 | entries for the wscons driver. See the GENERIC configuration file | | 366 | entries for the wscons driver. See the GENERIC configuration file |
366 | for more details. | | 367 | for more details. |
367 | | | 368 | |
368 | 20070913: | | 369 | 20070913: |
369 | A latent bug in dhclient/dhcpd that caused it to be unable to | | 370 | A latent bug in dhclient/dhcpd that caused it to be unable to |
370 | enumerate interfaces was fixed. The bug began to cause | | 371 | enumerate interfaces was fixed. The bug began to cause |
371 | problems after 20070911 when the kernel's SIOCGIFCONF | | 372 | problems after 20070911 when the kernel's SIOCGIFCONF |
372 | implementation was repaired. From 20070529 to 20070911 racoon | | 373 | implementation was repaired. From 20070529 to 20070911 racoon |
373 | could not enumerate interfaces. (These are noted because | | 374 | could not enumerate interfaces. (These are noted because |
374 | normal kernel/userspace version matching hygiene is not | | 375 | normal kernel/userspace version matching hygiene is not |
375 | sufficient to avoid this problem.) Ensure that both kernel | | 376 | sufficient to avoid this problem.) Ensure that both kernel |
376 | and userland are from after 20070913. | | 377 | and userland are from after 20070913. |
377 | | | 378 | |
378 | 20070703: | | 379 | 20070703: |
379 | nbinstall has been renamed ${MACHINE_GNU_ARCH}-install. It | | 380 | nbinstall has been renamed ${MACHINE_GNU_ARCH}-install. It |
380 | calls the target-specific strip program, and the logic to pass | | 381 | calls the target-specific strip program, and the logic to pass |
381 | down STRIP from make has been removed. This requires a | | 382 | down STRIP from make has been removed. This requires a |
382 | re-installation of tools. | | 383 | re-installation of tools. |
383 | | | 384 | |
384 | 20070422: | | 385 | 20070422: |
385 | The way OS emulations lookup filenames inside the emulation root | | 386 | The way OS emulations lookup filenames inside the emulation root |
386 | has been changed. Rather than modify the pathname (and copy back | | 387 | has been changed. Rather than modify the pathname (and copy back |
387 | to userspace) namei() and lookup() directly check the emulation | | 388 | to userspace) namei() and lookup() directly check the emulation |
388 | root. One side effect is that absolute symlinks inside the emulated | | 389 | root. One side effect is that absolute symlinks inside the emulated |
389 | root file system will be relative to that file system - unless they | | 390 | root file system will be relative to that file system - unless they |
390 | start /../ this is useful when the emulated root is a real install | | 391 | start /../ this is useful when the emulated root is a real install |
391 | that has such links. | | 392 | that has such links. |
392 | This might affect symlinks that have been added to reference outside | | 393 | This might affect symlinks that have been added to reference outside |
393 | the emulated root. | | 394 | the emulated root. |
394 | | | 395 | |
395 | 20070412: | | 396 | 20070412: |
396 | The pckbc driver on sgimips IP32 has been removed. Use macekbc | | 397 | The pckbc driver on sgimips IP32 has been removed. Use macekbc |
397 | instead. See the GENERIC32_IP3x kernel configuration for an | | 398 | instead. See the GENERIC32_IP3x kernel configuration for an |
398 | example. | | 399 | example. |
399 | | | 400 | |
400 | 20070319: | | 401 | 20070319: |
401 | src/lib/libc/Makefile revision 1.129 broke libc and ld.elf_so | | 402 | src/lib/libc/Makefile revision 1.129 broke libc and ld.elf_so |
402 | on many platforms due to incorrect flags settings. If you | | 403 | on many platforms due to incorrect flags settings. If you |
403 | updated and built after about 20070315, do "nbmake-$arch | | 404 | updated and built after about 20070315, do "nbmake-$arch |
404 | cleandir" in src/lib/libc and src/libexec/ld.elf_so to force a | | 405 | cleandir" in src/lib/libc and src/libexec/ld.elf_so to force a |
405 | rebuild of object files that might have been built | | 406 | rebuild of object files that might have been built |
406 | incorrectly, and ensure that you have at least | | 407 | incorrectly, and ensure that you have at least |
407 | src/lib/libc/Makefile 1.130. | | 408 | src/lib/libc/Makefile 1.130. |
408 | | | 409 | |
409 | 20070210: | | 410 | 20070210: |
410 | src/sys/sys/{sa.h,savar.h} were removed. | | 411 | src/sys/sys/{sa.h,savar.h} were removed. |
411 | find ${OBJDIR} \( -name .depend -o -name '*.d' \) -print \ | | 412 | find ${OBJDIR} \( -name .depend -o -name '*.d' \) -print \ |
412 | | xargs egrep -l '/sa.h|/savar.h' | xargs rm | | 413 | | xargs egrep -l '/sa.h|/savar.h' | xargs rm |
413 | will allow dependencies on those files to get get rebuilt | | 414 | will allow dependencies on those files to get get rebuilt |
414 | | | 415 | |
415 | 20070209: | | 416 | 20070209: |
416 | The threading model was changed when the newlock2 branch | | 417 | The threading model was changed when the newlock2 branch |
417 | was merged to NetBSD-current. If you boot with a new | | 418 | was merged to NetBSD-current. If you boot with a new |
418 | kernel (version 4.99.10), then you also need a new pthread | | 419 | kernel (version 4.99.10), then you also need a new pthread |
419 | library (/usr/lib/libpthread.so.0.7). If you boot with | | 420 | library (/usr/lib/libpthread.so.0.7). If you boot with |
420 | an old kernel, then you need the old pthread library | | 421 | an old kernel, then you need the old pthread library |
421 | (/usr/lib/libpthread.so.0.6). Provided you keep the kernel and | | 422 | (/usr/lib/libpthread.so.0.6). Provided you keep the kernel and |
422 | the pthread library in sync, old threaded applications should | | 423 | the pthread library in sync, old threaded applications should |
423 | continue to work with an old or new kernel. Note that named(8) | | 424 | continue to work with an old or new kernel. Note that named(8) |
424 | is the only threaded application in the base system. | | 425 | is the only threaded application in the base system. |
425 | | | 426 | |
426 | 20061214: | | 427 | 20061214: |
427 | Following the move of string_to_flags() and flags_to_string() | | 428 | Following the move of string_to_flags() and flags_to_string() |
428 | from the bin/ls/ sources to libutil, users doing UPDATE builds | | 429 | from the bin/ls/ sources to libutil, users doing UPDATE builds |
429 | will need to do a "make cleandir" in | | 430 | will need to do a "make cleandir" in |
430 | tools/mtree/, tools/makefs/, tools/binstall/, tools/pax/, | | 431 | tools/mtree/, tools/makefs/, tools/binstall/, tools/pax/, |
431 | bin/pax/, bin/ls/, usr.sbin/mtree/, usr.sbin/makefs/, | | 432 | bin/pax/, bin/ls/, usr.sbin/mtree/, usr.sbin/makefs/, |
432 | usr.bin/xinstall/, libexec/ftpd/, rescue/, as well | | 433 | usr.bin/xinstall/, libexec/ftpd/, rescue/, as well |
433 | as the installation images in distrib/ | | 434 | as the installation images in distrib/ |
434 | in order to excise stale references to the old stat_flags.h header | | 435 | in order to excise stale references to the old stat_flags.h header |
435 | file in the ls sources -- stat_flags.h has been removed. | | 436 | file in the ls sources -- stat_flags.h has been removed. |
436 | | | 437 | |
437 | 20061108: | | 438 | 20061108: |
438 | The configure script used in the src/tools/gcc compiler has been | | 439 | The configure script used in the src/tools/gcc compiler has been |
439 | changed to indicate that our libc has ssp support built-in and | | 440 | changed to indicate that our libc has ssp support built-in and |
440 | does not depend on -lssp and -lssp-nonshared. You'll need to | | 441 | does not depend on -lssp and -lssp-nonshared. You'll need to |
441 | make clean in src/tools/gcc first to rebuild the compiler. | | 442 | make clean in src/tools/gcc first to rebuild the compiler. |
442 | | | 443 | |
443 | 20061009: | | 444 | 20061009: |
444 | The sysctl variables net.inet{,6}.tcp{,6}.newreno are no longer | | 445 | The sysctl variables net.inet{,6}.tcp{,6}.newreno are no longer |
445 | available. Use net.inet{,6}.tcp{,6}.congctl.selected instead. | | 446 | available. Use net.inet{,6}.tcp{,6}.congctl.selected instead. |
446 | | | 447 | |
447 | 20060814: | | 448 | 20060814: |
448 | The vt, vidcconsole, kbd, and rpckbd drivers on acorn32 have been | | 449 | The vt, vidcconsole, kbd, and rpckbd drivers on acorn32 have been |
449 | withdrawn. Use vidcvideo and pckbd instead. See the GENERIC | | 450 | withdrawn. Use vidcvideo and pckbd instead. See the GENERIC |
450 | kernel configuration for an example. X servers from the last | | 451 | kernel configuration for an example. X servers from the last |
451 | few years should cope. | | 452 | few years should cope. |
452 | | | 453 | |
453 | 20060703: | | 454 | 20060703: |
454 | MPACPI is no more. We always configure PCI interrupts using ACPI | | 455 | MPACPI is no more. We always configure PCI interrupts using ACPI |
455 | if we have an ACPI kernel. The option MPACPI_SCANPCI has been renamed | | 456 | if we have an ACPI kernel. The option MPACPI_SCANPCI has been renamed |
456 | to ACPI_SCANPCI. Thanks to work from fvdl. | | 457 | to ACPI_SCANPCI. Thanks to work from fvdl. |
457 | | | 458 | |
458 | 20060627: | | 459 | 20060627: |
459 | socket(2) has changed, and its system call has been versioned. | | 460 | socket(2) has changed, and its system call has been versioned. |
460 | For userlands with the old version of socket(2), make sure that | | 461 | For userlands with the old version of socket(2), make sure that |
461 | your kernel has 'options COMPAT_30' set, or else 'bad system call' | | 462 | your kernel has 'options COMPAT_30' set, or else 'bad system call' |
462 | errors will result. | | 463 | errors will result. |
463 | | | 464 | |
464 | Hints for a more successful build: | | 465 | Hints for a more successful build: |
465 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | | 466 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
466 | Use build.sh, but do not use its "expert mode": | | 467 | Use build.sh, but do not use its "expert mode": |
467 | This will automatically build the tools in the | | 468 | This will automatically build the tools in the |
468 | correct order, and it will keep the tools and the | | 469 | correct order, and it will keep the tools and the |
469 | new build products from interfering with the running | | 470 | new build products from interfering with the running |
470 | system. This will allow you to ignore most of the | | 471 | system. This will allow you to ignore most of the |
471 | other advice in this file. | | 472 | other advice in this file. |
472 | Build a new kernel first: | | 473 | Build a new kernel first: |
473 | This makes sure that any new system calls or features | | 474 | This makes sure that any new system calls or features |
474 | expected by the new userland will be present. This | | 475 | expected by the new userland will be present. This |
475 | helps to avoid critical errors when upgrading. | | 476 | helps to avoid critical errors when upgrading. |
476 | Use object directories: | | 477 | Use object directories: |
477 | This helps to keep stale object | | 478 | This helps to keep stale object |
478 | files from polluting the build if a Makefile "forgets" | | 479 | files from polluting the build if a Makefile "forgets" |
479 | about one. It also makes it easier to clean up after | | 480 | about one. It also makes it easier to clean up after |
480 | a build. It's also necessary if you want to use the | | 481 | a build. It's also necessary if you want to use the |
481 | same source tree for multiple machines. | | 482 | same source tree for multiple machines. |
482 | To use object directories with build.sh: | | 483 | To use object directories with build.sh: |
483 | a) invoke build.sh with the "-M" or "-O" options. | | 484 | a) invoke build.sh with the "-M" or "-O" options. |
484 | To use object directories without using build.sh: | | 485 | To use object directories without using build.sh: |
485 | a) cd /usr/src ; make cleandir | | 486 | a) cd /usr/src ; make cleandir |
486 | b) Add "OBJMACHINE=yes" to /etc/mk.conf | | 487 | b) Add "OBJMACHINE=yes" to /etc/mk.conf |
487 | c) Add "MKOBJDIRS=yes" to /etc/mk.conf | | 488 | c) Add "MKOBJDIRS=yes" to /etc/mk.conf |
488 | d) cd /usr/src ; make build | | 489 | d) cd /usr/src ; make build |
489 | Note that running "make obj" in a directory will create | | 490 | Note that running "make obj" in a directory will create |
490 | in obj.$MACHINE directory. | | 491 | in obj.$MACHINE directory. |
491 | Build to a DESTDIR: | | 492 | Build to a DESTDIR: |
492 | This helps to keep old installed files (especially libraries) | | 493 | This helps to keep old installed files (especially libraries) |
493 | from interfering with the new build. | | 494 | from interfering with the new build. |
494 | To build to a DESTDIR with build.sh, use the "-D" option. | | 495 | To build to a DESTDIR with build.sh, use the "-D" option. |
495 | To build to a DESTDIR without using build.sh, set the DESTDIR | | 496 | To build to a DESTDIR without using build.sh, set the DESTDIR |
496 | environment variable before running make build. It should be | | 497 | environment variable before running make build. It should be |
497 | set to the pathname of an initially empty directory. | | 498 | set to the pathname of an initially empty directory. |
498 | Problems: if you do not use build.sh, you might need to | | 499 | Problems: if you do not use build.sh, you might need to |
499 | update critical utilities without using DESTDIR since | | 500 | update critical utilities without using DESTDIR since |
500 | nothing is executed from what is installed in DESTDIR. | | 501 | nothing is executed from what is installed in DESTDIR. |
501 | (See critical utils, below.) | | 502 | (See critical utils, below.) |
502 | Build often: | | 503 | Build often: |
503 | This keeps critical utilities current enough to not choke | | 504 | This keeps critical utilities current enough to not choke |
504 | on any other part of the source tree that depends on up to | | 505 | on any other part of the source tree that depends on up to |
505 | date functionality. If you use build.sh, you should not have | | 506 | date functionality. If you use build.sh, you should not have |
506 | this problem. | | 507 | this problem. |
507 | | | 508 | |
508 | What to do if things don't work: | | 509 | What to do if things don't work: |
509 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | | 510 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
510 | When things don't work there are usually a few things that commonly | | 511 | When things don't work there are usually a few things that commonly |
511 | should be done. | | 512 | should be done. |
512 | 1) make includes | | 513 | 1) make includes |
513 | This should be done automatically by make build. | | 514 | This should be done automatically by make build. |
514 | 2) cd share/mk && make install | | 515 | 2) cd share/mk && make install |
515 | Again, automatically done by make build. | | 516 | Again, automatically done by make build. |
516 | | | 517 | |
517 | Failsafe rebuild of a small part of the tree: | | 518 | Failsafe rebuild of a small part of the tree: |
518 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | | 519 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
519 | To make sure you rebuild something correctly you want to do | | 520 | To make sure you rebuild something correctly you want to do |
520 | something like the following: | | 521 | something like the following: |
521 | 1) Make sure the includes and .mk files are up to date. | | 522 | 1) Make sure the includes and .mk files are up to date. |
522 | 2) Make sure any program used to build the particular | | 523 | 2) Make sure any program used to build the particular |
523 | utility is up to date. (yacc, lex, etc...) | | 524 | utility is up to date. (yacc, lex, etc...) |
524 | 3) cd ...path/to/util... | | 525 | 3) cd ...path/to/util... |
525 | make cleandir | | 526 | make cleandir |
526 | rm ...all obj directories... | | 527 | rm ...all obj directories... |
527 | make cleandir # yes, again | | 528 | make cleandir # yes, again |
528 | make obj | | 529 | make obj |
529 | make depend && make | | 530 | make depend && make |
530 | | | 531 | |
531 | Failsafe rebuild of the entire tree: | | 532 | Failsafe rebuild of the entire tree: |
532 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | | 533 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
533 | If you really want to make sure the source tree is clean and | | 534 | If you really want to make sure the source tree is clean and |
534 | ready for a build try the following. Note that sourcing /etc/mk.conf | | 535 | ready for a build try the following. Note that sourcing /etc/mk.conf |
535 | (a make(1) Makefile) in this manner is not right, and will not work | | 536 | (a make(1) Makefile) in this manner is not right, and will not work |
536 | for anyone who uses any make(1) features in /etc/mk.conf. | | 537 | for anyone who uses any make(1) features in /etc/mk.conf. |
537 | | | 538 | |
538 | ---cut here--- | | 539 | ---cut here--- |
539 | #!/bin/sh | | 540 | #!/bin/sh |
540 | . /etc/mk.conf | | 541 | . /etc/mk.conf |
541 | | | 542 | |
542 | if [ -z $NETBSDSRCDIR ] ; then | | 543 | if [ -z $NETBSDSRCDIR ] ; then |
543 | NETBSDSRCDIR=/usr/src | | 544 | NETBSDSRCDIR=/usr/src |
544 | fi | | 545 | fi |
545 | if [ \! -d $NETBSDSRCDIR ] ; then | | 546 | if [ \! -d $NETBSDSRCDIR ] ; then |
546 | echo Unable to find sources | | 547 | echo Unable to find sources |
547 | exit 1 | | 548 | exit 1 |
548 | fi | | 549 | fi |
549 | find $NETBSDSRCDIR -name \*.o -o -name obj.\* -o -name obj -exec rm \{\} \; | | 550 | find $NETBSDSRCDIR -name \*.o -o -name obj.\* -o -name obj -exec rm \{\} \; |
550 | | | 551 | |
551 | if [ -z $BSDOBJDIR ] ; then | | 552 | if [ -z $BSDOBJDIR ] ; then |
552 | BSDOBJDIR=/usr/obj | | 553 | BSDOBJDIR=/usr/obj |
553 | fi | | 554 | fi |
554 | if [ -d $BSDOBJDIR ] ; then | | 555 | if [ -d $BSDOBJDIR ] ; then |
555 | rm -rf $BSDOBJDIR | | 556 | rm -rf $BSDOBJDIR |
556 | fi | | 557 | fi |
557 | | | 558 | |
558 | cd $NETBSDSRCDIR && make cleandir | | 559 | cd $NETBSDSRCDIR && make cleandir |
559 | | | 560 | |
560 | ---cut here--- | | 561 | ---cut here--- |
561 | | | 562 | |
562 | Critical utilities: | | 563 | Critical utilities: |
563 | ^^^^^^^^^^^^^^^^^^^ | | 564 | ^^^^^^^^^^^^^^^^^^^ |
564 | usr.bin/compile_et | | 565 | usr.bin/compile_et |
565 | usr.bin/make | | 566 | usr.bin/make |
566 | usr.bin/yacc | | 567 | usr.bin/yacc |
567 | usr.bin/lex | | 568 | usr.bin/lex |
568 | usr.bin/xlint | | 569 | usr.bin/xlint |
569 | usr.bin/config | | 570 | usr.bin/config |
570 | | | 571 | |
571 | Other problems and possible solutions: | | 572 | Other problems and possible solutions: |
572 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | | 573 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
573 | Symptom:Complaints involving a Makefile. | | 574 | Symptom:Complaints involving a Makefile. |
574 | Fix: Rebuild usr.bin/make: | | 575 | Fix: Rebuild usr.bin/make: |
575 | cd usr.bin/make && make && make install | | 576 | cd usr.bin/make && make && make install |
576 | Or, a failsafe method if that doesn't work: | | 577 | Or, a failsafe method if that doesn't work: |
577 | cd usr.bin/make && cc *.c */*.c -I . -o make && mv make /usr/bin | | 578 | cd usr.bin/make && cc *.c */*.c -I . -o make && mv make /usr/bin |
578 | | | 579 | |
579 | Fix: Make sure .mk files are up to date. | | 580 | Fix: Make sure .mk files are up to date. |
580 | cd share/mk && make install | | 581 | cd share/mk && make install |
581 | | | 582 | |
582 | Symptom:Kernel `config' fails to configure any kernel, including GENERIC. | | 583 | Symptom:Kernel `config' fails to configure any kernel, including GENERIC. |
583 | Fix: Rebuild usr.bin/config | | 584 | Fix: Rebuild usr.bin/config |
584 | | | 585 | |
585 | Symptom: | | 586 | Symptom: |
586 | Fix: Rebuild usr.bin/yacc | | 587 | Fix: Rebuild usr.bin/yacc |
587 | | | 588 | |
588 | Symptom: | | 589 | Symptom: |
589 | Fix: Rebuild usr.bin/lex | | 590 | Fix: Rebuild usr.bin/lex |
590 | | | 591 | |
591 | Symptom: | | 592 | Symptom: |
592 | Fix: rm /usr/lib/libbfd.a | | 593 | Fix: rm /usr/lib/libbfd.a |
593 | | | 594 | |
594 | Symptom:Obsolete intermediate files are used during compilation | | 595 | Symptom:Obsolete intermediate files are used during compilation |
595 | Fix: Try the following sequence of commands in the directory in question. | | 596 | Fix: Try the following sequence of commands in the directory in question. |
596 | make cleandir; rm `make print-objdir`; make cleandir; make obj | | 597 | make cleandir; rm `make print-objdir`; make cleandir; make obj |
597 | (If you built the tree without "make obj" in the past, obsolete files | | 598 | (If you built the tree without "make obj" in the past, obsolete files |
598 | may remain. The command tries to clean everything up) | | 599 | may remain. The command tries to clean everything up) |
599 | | | 600 | |
600 | Symptom:.../sysinst/run.c:xx: warning: initialization from incompatible | | 601 | Symptom:.../sysinst/run.c:xx: warning: initialization from incompatible |
601 | pointer type | | 602 | pointer type |
602 | Fix: Rebuild and install usr.bin/menuc | | 603 | Fix: Rebuild and install usr.bin/menuc |
603 | | | 604 | |
604 | Symptom:mklocale not found during build in share/locale/ctype | | 605 | Symptom:mklocale not found during build in share/locale/ctype |
605 | Fix: Build and install usr.bin/mklocale | | 606 | Fix: Build and install usr.bin/mklocale |
606 | | | 607 | |
607 | Symptom:undefined reference to `__assert13' or `__unsetenv13' | | 608 | Symptom:undefined reference to `__assert13' or `__unsetenv13' |
608 | Fix: Rebuild and install lib/libc | | 609 | Fix: Rebuild and install lib/libc |
609 | | | 610 | |
610 | Symptom:usr.bin/config fails to build. | | 611 | Symptom:usr.bin/config fails to build. |
611 | Fix: Try building with -DMAKE_BOOTSTRAP added to CFLAGS in Makefile. | | 612 | Fix: Try building with -DMAKE_BOOTSTRAP added to CFLAGS in Makefile. |
612 | | | 613 | |
613 | Symptom:undefined reference to `getprogname' or `setprogname' | | 614 | Symptom:undefined reference to `getprogname' or `setprogname' |
614 | Fix: Rebuild and install lib/libc | | 615 | Fix: Rebuild and install lib/libc |
615 | | | 616 | |
616 | Symptom:lint does not understand the '-X' option | | 617 | Symptom:lint does not understand the '-X' option |
617 | Fix: May need to build & install libs with NOLINT=1 before rebuilding lint | | 618 | Fix: May need to build & install libs with NOLINT=1 before rebuilding lint |
618 | | | 619 | |
619 | Symptom:Update build fails in src/tools/gcc complaining that a variable | | 620 | Symptom:Update build fails in src/tools/gcc complaining that a variable |
620 | (e.g. CPPFLAGS) has changed since the previous run. | | 621 | (e.g. CPPFLAGS) has changed since the previous run. |
621 | Fix: Run "nbmake-${ARCH} clean" in src/tools/gcc or do a clean build. | | 622 | Fix: Run "nbmake-${ARCH} clean" in src/tools/gcc or do a clean build. |