| @@ -1,424 +1,428 @@ | | | @@ -1,424 +1,428 @@ |
1 | $NetBSD: UPDATING,v 1.195 2009/05/01 23:08:25 perry Exp $ | | 1 | $NetBSD: UPDATING,v 1.196 2009/05/27 18:02:57 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 | 20090501: | | 19 | 20090501: |
20 | Several new functions were added to string.h/libc, and this | | 20 | Several new functions were added to string.h/libc, and this |
21 | can cause autoconf problems during the tool build for people | | 21 | can cause autoconf problems during the tool build for people |
22 | who fail to clean out their tools objects properly. If you | | 22 | who fail to clean out their tools objects properly. If you |
23 | note messages about stpcpy, stpncpy or strnlen accompanying a | | 23 | note messages about stpcpy, stpncpy or strnlen accompanying a |
24 | failure during the tool build, clean out all your tools | | 24 | failure during the tool build, clean out all your tools |
25 | objects and start again. | | 25 | objects and start again. |
26 | | | 26 | |
27 | 20090325: | | 27 | 20090325: |
28 | The i386 port was switched to i486 default toolchain. This requires | | 28 | The i386 port was switched to i486 default toolchain. This requires |
29 | cleaning your src/tools directory and $TOOLDIR and rebuilding them. | | 29 | cleaning your src/tools directory and $TOOLDIR and rebuilding them. |
30 | | | 30 | |
31 | 20090126: | | 31 | 20090126: |
32 | The __posix_fadvise50 system call changed assembly stub type. You need to | | 32 | The __posix_fadvise50 system call changed assembly stub type. You need to |
33 | 'rm -f __posix_fadvise50.*' in the libc build directory to avoid using | | 33 | 'rm -f __posix_fadvise50.*' in the libc build directory to avoid using |
34 | the old assembly stub. | | 34 | the old assembly stub. |
35 | | | 35 | |
36 | 20090202: | | 36 | 20090202: |
37 | pkg_install now depends on the pkgdb cache for automatic conflict | | 37 | pkg_install now depends on the pkgdb cache for automatic conflict |
38 | detection. It is recommented to rebuild the cache with | | 38 | detection. It is recommented to rebuild the cache with |
39 | ``pkg_admin rebuild''. | | 39 | ``pkg_admin rebuild''. |
40 | | | 40 | |
41 | 20090110: | | 41 | 20090110: |
42 | time_t and dev_t have been bumped to 64 bit quantities. To upgrade: | | 42 | time_t and dev_t have been bumped to 64 bit quantities. To upgrade: |
43 | 1. Make sure your kernel has COMPAT_50 in it. Build and install. | | 43 | 1. Make sure your kernel has COMPAT_50 in it. Build and install. |
44 | This is needed even in the MODULAR kernel because there is | | 44 | This is needed even in the MODULAR kernel because there is |
45 | conditionally compiled code in rtsock.c. | | 45 | conditionally compiled code in rtsock.c. |
46 | 2. make sure build.sh completes and the binaries in a chroot work | | 46 | 2. make sure build.sh completes and the binaries in a chroot work |
47 | before installing. | | 47 | before installing. |
48 | 3. If you don't use build.sh and you build directly to root, and | | 48 | 3. If you don't use build.sh and you build directly to root, and |
49 | your build breaks in the middle, don't despair. Make sure headers | | 49 | your build breaks in the middle, don't despair. Make sure headers |
50 | are installed properly, and start building libraries first libc | | 50 | are installed properly, and start building libraries first libc |
51 | and libutil, install them and then continue building all the | | 51 | and libutil, install them and then continue building all the |
52 | libraries in src/lib and src/gnu/lib and install them. Once | | 52 | libraries in src/lib and src/gnu/lib and install them. Once |
53 | the new libraries are installed, you can restart the build. | | 53 | the new libraries are installed, you can restart the build. |
54 | 4. If you compile packages and you notice link time warnings, | | 54 | 4. If you compile packages and you notice link time warnings, |
55 | rebuild the required packages to update their shared libraries. | | 55 | rebuild the required packages to update their shared libraries. |
56 | Any package you rebuild will require rebuilding all the packages | | 56 | Any package you rebuild will require rebuilding all the packages |
57 | that depend on it. | | 57 | that depend on it. |
58 | 5. Next time you run pwd_mkdb with the new binary, the file | | 58 | 5. Next time you run pwd_mkdb with the new binary, the file |
59 | will be upgraded and it will not be backwards compatible. | | 59 | will be upgraded and it will not be backwards compatible. |
60 | 6. The utmpx/wtmpx files (/var/run/utmpx and /var/log/wtmpx, see | | 60 | 6. The utmpx/wtmpx files (/var/run/utmpx and /var/log/wtmpx, see |
61 | lastlogx(5)) have been versioned, and there is a heuristic | | 61 | lastlogx(5)) have been versioned, and there is a heuristic |
62 | for utmp. You are better off removing the old files after | | 62 | for utmp. You are better off removing the old files after |
63 | upgrading. The automated clearing of /var/run during | | 63 | upgrading. The automated clearing of /var/run during |
64 | boot, and the automated rotating of files in /var/log by | | 64 | boot, and the automated rotating of files in /var/log by |
65 | newsyslog(8), may mean that you do not have to remove the | | 65 | newsyslog(8), may mean that you do not have to remove the |
66 | files manually. | | 66 | files manually. |
67 | 7. The optional accounting file (/var/account/acct, see | | 67 | 7. The optional accounting file (/var/account/acct, see |
68 | accton(8)) has not been versioned, and will need to be | | 68 | accton(8)) has not been versioned, and will need to be |
69 | removed. The automatic rotation of the accounting file by | | 69 | removed. The automatic rotation of the accounting file by |
70 | /etc/daily limits the bad consequences of failure to remove | | 70 | /etc/daily limits the bad consequences of failure to remove |
71 | the file. | | 71 | the file. |
| | | 72 | 8. Application software that writes time_t to binary files on |
| | | 73 | disk will break or need attention. Most notably: if you are |
| | | 74 | using PostgreSQL < 8.4, you need to dump your databases, |
| | | 75 | rebuild PostgreSQL with the new time_t, then restore. |
72 | | | 76 | |
73 | 20081219: | | 77 | 20081219: |
74 | config(1) has been updated, and one of the files it creates - | | 78 | config(1) has been updated, and one of the files it creates - |
75 | swapnetbsd.o - has changed format. You need to rebuild config | | 79 | swapnetbsd.o - has changed format. You need to rebuild config |
76 | (done automatically by build.sh) and then you need to rerun | | 80 | (done automatically by build.sh) and then you need to rerun |
77 | config on all kernel configuration files before rebuilding those | | 81 | config on all kernel configuration files before rebuilding those |
78 | kernels. | | 82 | kernels. |
79 | | | 83 | |
80 | 20081205: | | 84 | 20081205: |
81 | If you build with MKX11=no, you should remove /etc/rc.d/xdm and | | 85 | If you build with MKX11=no, you should remove /etc/rc.d/xdm and |
82 | /etc/rc.d/xfs from DESTDIR because those files were moved to the xetc | | 86 | /etc/rc.d/xfs from DESTDIR because those files were moved to the xetc |
83 | set and will appear as extra files for MKX11=no update builds. | | 87 | set and will appear as extra files for MKX11=no update builds. |
84 | | | 88 | |
85 | 20081122: | | 89 | 20081122: |
86 | On i386, various kernel options(4) in GENERIC including | | 90 | On i386, various kernel options(4) in GENERIC including |
87 | file systems have been disabled and moved into kernel modules. | | 91 | file systems have been disabled and moved into kernel modules. |
88 | Before trying a new GENERIC kernel, you have to prepare the | | 92 | Before trying a new GENERIC kernel, you have to prepare the |
89 | following files as well as a new GENERIC kernel: | | 93 | following files as well as a new GENERIC kernel: |
90 | | | 94 | |
91 | - build and install kernel modules from src/sys/modules | | 95 | - build and install kernel modules from src/sys/modules |
92 | | | 96 | |
93 | - install the latest bootloader, which will load a module | | 97 | - install the latest bootloader, which will load a module |
94 | for the file system from which the kernel is loaded automatically | | 98 | for the file system from which the kernel is loaded automatically |
95 | | | 99 | |
96 | If you have to load your kernel from a file system which is not of | | 100 | If you have to load your kernel from a file system which is not of |
97 | the same type as the root file system, you have to load the necessary | | 101 | the same type as the root file system, you have to load the necessary |
98 | file system module manually on the boot prompt or in the boot.cfg file. | | 102 | file system module manually on the boot prompt or in the boot.cfg file. |
99 | | | 103 | |
100 | 20080827: | | 104 | 20080827: |
101 | If you built and installed a libc from sources between | | 105 | If you built and installed a libc from sources between |
102 | 2008/08/20 and 2008/08/26 you got a broken strtouq(3) | | 106 | 2008/08/20 and 2008/08/26 you got a broken strtouq(3) |
103 | which results in false errors reported by lint(1). | | 107 | which results in false errors reported by lint(1). |
104 | Since this breaks the libc build itself, manual help is | | 108 | Since this breaks the libc build itself, manual help is |
105 | needed -- lint must be disabled temporarily, e.g.: | | 109 | needed -- lint must be disabled temporarily, e.g.: |
106 | $ (cd lib/libc && make MKLINT=no dependall install) | | 110 | $ (cd lib/libc && make MKLINT=no dependall install) |
107 | | | 111 | |
108 | 20080813: | | 112 | 20080813: |
109 | MKDEBUG build was broken because the .depend files did not know | | 113 | MKDEBUG build was broken because the .depend files did not know |
110 | about .go files. You need to remove all .depend files and rebuild. | | 114 | about .go files. You need to remove all .depend files and rebuild. |
111 | | | 115 | |
112 | 20080731: | | 116 | 20080731: |
113 | WAPBL (metadata journaling support) has been added, but at this | | 117 | WAPBL (metadata journaling support) has been added, but at this |
114 | time isn't backwards compatible with pre-WAPBL aware kernels | | 118 | time isn't backwards compatible with pre-WAPBL aware kernels |
115 | and userland (fsck_ffs in particular). Please make sure you | | 119 | and userland (fsck_ffs in particular). Please make sure you |
116 | don't use a journaled filesystem with an older kernel/userland, | | 120 | don't use a journaled filesystem with an older kernel/userland, |
117 | especially an uncleanly mounted journaled filesystem. WAPBL | | 121 | especially an uncleanly mounted journaled filesystem. WAPBL |
118 | also requires the super block to be in the UFS2 format. You | | 122 | also requires the super block to be in the UFS2 format. You |
119 | can use fsck_ffs -c 4 to update the superblock format. | | 123 | can use fsck_ffs -c 4 to update the superblock format. |
120 | | | 124 | |
121 | 20080721: | | 125 | 20080721: |
122 | Assembler warnings are now fatal if $WARNS>0 and $NOGCCERROR | | 126 | Assembler warnings are now fatal if $WARNS>0 and $NOGCCERROR |
123 | isn't defined. | | 127 | isn't defined. |
124 | | | 128 | |
125 | 20080531: | | 129 | 20080531: |
126 | The ioctl number of DRVSUSPENDDEV command on /dev/drvctl changed | | 130 | The ioctl number of DRVSUSPENDDEV command on /dev/drvctl changed |
127 | from 125 (conflicted with DRVCTLCOMMAND) to 129. The drvctl(8) | | 131 | from 125 (conflicted with DRVCTLCOMMAND) to 129. The drvctl(8) |
128 | utility needs to be rebuilt and reinstalled as older binaries | | 132 | utility needs to be rebuilt and reinstalled as older binaries |
129 | won't work correctly. The following sequence of commands: | | 133 | won't work correctly. The following sequence of commands: |
130 | | | 134 | |
131 | $ (cd sys/sys/ && nbmake-$arch includes) | | 135 | $ (cd sys/sys/ && nbmake-$arch includes) |
132 | $ (cd sbin/drvctl/ && nbmake-$arch clean) | | 136 | $ (cd sbin/drvctl/ && nbmake-$arch clean) |
133 | $ (cd sbin/drvctl/ && nbmake-$arch all) | | 137 | $ (cd sbin/drvctl/ && nbmake-$arch all) |
134 | | | 138 | |
135 | leaves new drvctl utility in sbin/drvctl build directory. | | 139 | leaves new drvctl utility in sbin/drvctl build directory. |
136 | | | 140 | |
137 | 20080503: | | 141 | 20080503: |
138 | The <bsd.lib.mk> variable MKPRIVATELIB was renamed to LIBISPRIVATE. | | 142 | The <bsd.lib.mk> variable MKPRIVATELIB was renamed to LIBISPRIVATE. |
139 | | | 143 | |
140 | 20080521: | | 144 | 20080521: |
141 | For a while, unprivileged UPDATE builds would fail to | | 145 | For a while, unprivileged UPDATE builds would fail to |
142 | succeed at the checkflist stage, complaining that | | 146 | succeed at the checkflist stage, complaining that |
143 | ${DESTDIR}/stand/<arch>/ did not exist. A fix for this | | 147 | ${DESTDIR}/stand/<arch>/ did not exist. A fix for this |
144 | problem was committed to share/mk/bsd.kmodule.mk, revision 1.9. | | 148 | problem was committed to share/mk/bsd.kmodule.mk, revision 1.9. |
145 | If you already hit this problem, update the .mk file, | | 149 | If you already hit this problem, update the .mk file, |
146 | remove ${DESTDIR}/stand/<arch>, and re-run the build. | | 150 | remove ${DESTDIR}/stand/<arch>, and re-run the build. |
147 | | | 151 | |
148 | 20080303: | | 152 | 20080303: |
149 | Linker warnings are now fatal if $WARNS>0. | | 153 | Linker warnings are now fatal if $WARNS>0. |
150 | | | 154 | |
151 | 20080126: | | 155 | 20080126: |
152 | The posix_fadvise system call has been changed from an assembly | | 156 | The posix_fadvise system call has been changed from an assembly |
153 | stub, to a c file that calls an assembly stub. You need to | | 157 | stub, to a c file that calls an assembly stub. You need to |
154 | 'rm -f posix_fadvise.* .depend' in the libc build directory to | | 158 | 'rm -f posix_fadvise.* .depend' in the libc build directory to |
155 | avoid using the old assembly stub. | | 159 | avoid using the old assembly stub. |
156 | | | 160 | |
157 | 20071209: | | 161 | 20071209: |
158 | The acpiec(4) driver has been split into two attachments. If you | | 162 | The acpiec(4) driver has been split into two attachments. If you |
159 | get ACPI errors before the attachment, please update your kernel | | 163 | get ACPI errors before the attachment, please update your kernel |
160 | configuration file appropriately or see GENERIC for more details. | | 164 | configuration file appropriately or see GENERIC for more details. |
161 | | | 165 | |
162 | 20071115: | | 166 | 20071115: |
163 | The it(4) driver has been renamed to itesio(4) and the old port | | 167 | The it(4) driver has been renamed to itesio(4) and the old port |
164 | argument specified in the kernel configuration file is not valid | | 168 | argument specified in the kernel configuration file is not valid |
165 | anymore. The itesio(4) driver now uses the Super I/O address port | | 169 | anymore. The itesio(4) driver now uses the Super I/O address port |
166 | rather than the EC address port. Please update your kernel | | 170 | rather than the EC address port. Please update your kernel |
167 | configuration file appropriately or see GENERIC for more details. | | 171 | configuration file appropriately or see GENERIC for more details. |
168 | | | 172 | |
169 | 20071028: | | 173 | 20071028: |
170 | The pccons(4) driver has been removed from the NetBSD/shark port. | | 174 | The pccons(4) driver has been removed from the NetBSD/shark port. |
171 | You need to update any custom kernel configuration file you have | | 175 | You need to update any custom kernel configuration file you have |
172 | to remove any references to pccons (which includes removing the | | 176 | to remove any references to pccons (which includes removing the |
173 | now useless XSERVER option) and replace them with the correct | | 177 | now useless XSERVER option) and replace them with the correct |
174 | entries for the wscons driver. See the GENERIC configuration file | | 178 | entries for the wscons driver. See the GENERIC configuration file |
175 | for more details. | | 179 | for more details. |
176 | | | 180 | |
177 | 20070913: | | 181 | 20070913: |
178 | A latent bug in dhclient/dhcpd that caused it to be unable to | | 182 | A latent bug in dhclient/dhcpd that caused it to be unable to |
179 | enumerate interfaces was fixed. The bug began to cause | | 183 | enumerate interfaces was fixed. The bug began to cause |
180 | problems after 20070911 when the kernel's SIOCGIFCONF | | 184 | problems after 20070911 when the kernel's SIOCGIFCONF |
181 | implementation was repaired. From 20070529 to 20070911 racoon | | 185 | implementation was repaired. From 20070529 to 20070911 racoon |
182 | could not enumerate interfaces. (These are noted because | | 186 | could not enumerate interfaces. (These are noted because |
183 | normal kernel/userspace version matching hygiene is not | | 187 | normal kernel/userspace version matching hygiene is not |
184 | sufficient to avoid this problem.) Ensure that both kernel | | 188 | sufficient to avoid this problem.) Ensure that both kernel |
185 | and userland are from after 20070913. | | 189 | and userland are from after 20070913. |
186 | | | 190 | |
187 | 20070703: | | 191 | 20070703: |
188 | nbinstall has been renamed as it calls the target specific and | | 192 | nbinstall has been renamed as it calls the target specific and |
189 | the logic to pass down STRIP from mk been removed. This forces | | 193 | the logic to pass down STRIP from mk been removed. This forces |
190 | a re-installation of tools. | | 194 | a re-installation of tools. |
191 | | | 195 | |
192 | 20070422: | | 196 | 20070422: |
193 | The way OS emulations lookup filenames inside the emulation root | | 197 | The way OS emulations lookup filenames inside the emulation root |
194 | has been changed. Rather than modify the pathname (and copy back | | 198 | has been changed. Rather than modify the pathname (and copy back |
195 | to userspace) namei() and lookup() directly check the emulation | | 199 | to userspace) namei() and lookup() directly check the emulation |
196 | root. One side effect is that absolute symlinks inside the emulated | | 200 | root. One side effect is that absolute symlinks inside the emulated |
197 | root file system will be relative to that file system - unless they | | 201 | root file system will be relative to that file system - unless they |
198 | start /../ this is useful when the emulated root is a real install | | 202 | start /../ this is useful when the emulated root is a real install |
199 | that has such links. | | 203 | that has such links. |
200 | This might affect symlinks that have been added to reference outside | | 204 | This might affect symlinks that have been added to reference outside |
201 | the emulated root. | | 205 | the emulated root. |
202 | | | 206 | |
203 | 20070412: | | 207 | 20070412: |
204 | The pckbc driver on sgimips IP32 has been removed. Use macekbc | | 208 | The pckbc driver on sgimips IP32 has been removed. Use macekbc |
205 | instead. See the GENERIC32_IP3x kernel configuration for an | | 209 | instead. See the GENERIC32_IP3x kernel configuration for an |
206 | example. | | 210 | example. |
207 | | | 211 | |
208 | 20070319: | | 212 | 20070319: |
209 | src/lib/libc/Makefile revision 1.129 broke libc and ld.elf_so | | 213 | src/lib/libc/Makefile revision 1.129 broke libc and ld.elf_so |
210 | on many platforms due to incorrect flags settings. If you | | 214 | on many platforms due to incorrect flags settings. If you |
211 | updated and built after about 20070315, do "nbmake-$arch | | 215 | updated and built after about 20070315, do "nbmake-$arch |
212 | cleandir" in src/lib/libc and src/libexec/ld.elf_so to force a | | 216 | cleandir" in src/lib/libc and src/libexec/ld.elf_so to force a |
213 | rebuild of object files that might have been built | | 217 | rebuild of object files that might have been built |
214 | incorrectly, and ensure that you have at least | | 218 | incorrectly, and ensure that you have at least |
215 | src/lib/libc/Makefile 1.130. | | 219 | src/lib/libc/Makefile 1.130. |
216 | | | 220 | |
217 | 20070210: | | 221 | 20070210: |
218 | src/sys/sys/{sa.h,savar.h} were removed. | | 222 | src/sys/sys/{sa.h,savar.h} were removed. |
219 | find ${OBJDIR} \( -name .depend -o -name '*.d' \) -print \ | | 223 | find ${OBJDIR} \( -name .depend -o -name '*.d' \) -print \ |
220 | | xargs egrep -l '/sa.h|/savar.h' | xargs rm | | 224 | | xargs egrep -l '/sa.h|/savar.h' | xargs rm |
221 | will allow dependencies on those files to get get rebuilt | | 225 | will allow dependencies on those files to get get rebuilt |
222 | | | 226 | |
223 | 20070209: | | 227 | 20070209: |
224 | The threading model was changed when the newlock2 branch | | 228 | The threading model was changed when the newlock2 branch |
225 | was merged to NetBSD-current. If you boot with a new | | 229 | was merged to NetBSD-current. If you boot with a new |
226 | kernel (version 4.99.10), then you also need a new pthread | | 230 | kernel (version 4.99.10), then you also need a new pthread |
227 | library (/usr/lib/libpthread.so.0.7). If you boot with | | 231 | library (/usr/lib/libpthread.so.0.7). If you boot with |
228 | an old kernel, then you need the old pthread library | | 232 | an old kernel, then you need the old pthread library |
229 | (/usr/lib/libpthread.so.0.6). Provided you keep the kernel and | | 233 | (/usr/lib/libpthread.so.0.6). Provided you keep the kernel and |
230 | the pthread library in sync, old threaded applications should | | 234 | the pthread library in sync, old threaded applications should |
231 | continue to work with an old or new kernel. Note that named(8) | | 235 | continue to work with an old or new kernel. Note that named(8) |
232 | is the only threaded application in the base system. | | 236 | is the only threaded application in the base system. |
233 | | | 237 | |
234 | 20061214: | | 238 | 20061214: |
235 | Following the move of string_to_flags() and flags_to_string() | | 239 | Following the move of string_to_flags() and flags_to_string() |
236 | from the bin/ls/ sources to libutil, users doing UPDATE builds | | 240 | from the bin/ls/ sources to libutil, users doing UPDATE builds |
237 | will need to do a "make cleandir" in | | 241 | will need to do a "make cleandir" in |
238 | tools/mtree/, tools/makefs/, tools/binstall/, tools/pax/, | | 242 | tools/mtree/, tools/makefs/, tools/binstall/, tools/pax/, |
239 | bin/pax/, bin/ls/, usr.sbin/mtree/, usr.sbin/makefs/, | | 243 | bin/pax/, bin/ls/, usr.sbin/mtree/, usr.sbin/makefs/, |
240 | usr.bin/xinstall/, libexec/ftpd/, rescue/, as well | | 244 | usr.bin/xinstall/, libexec/ftpd/, rescue/, as well |
241 | as the installation images in distrib/ | | 245 | as the installation images in distrib/ |
242 | in order to excise stale references to the old stat_flags.h header | | 246 | in order to excise stale references to the old stat_flags.h header |
243 | file in the ls sources -- stat_flags.h has been removed. | | 247 | file in the ls sources -- stat_flags.h has been removed. |
244 | | | 248 | |
245 | 20061108: | | 249 | 20061108: |
246 | The configure script used in the src/tools/gcc compiler has been | | 250 | The configure script used in the src/tools/gcc compiler has been |
247 | changed to indicate that our libc has ssp support built-in and | | 251 | changed to indicate that our libc has ssp support built-in and |
248 | does not depend on -lssp and -lssp-nonshared. You'll need to | | 252 | does not depend on -lssp and -lssp-nonshared. You'll need to |
249 | make clean in src/tools/gcc first to rebuild the compiler. | | 253 | make clean in src/tools/gcc first to rebuild the compiler. |
250 | | | 254 | |
251 | 20061009: | | 255 | 20061009: |
252 | The sysctl variables net.inet{,6}.tcp{,6}.newreno are no longer | | 256 | The sysctl variables net.inet{,6}.tcp{,6}.newreno are no longer |
253 | available. Use net.inet{,6}.tcp{,6}.congctl.selected instead. | | 257 | available. Use net.inet{,6}.tcp{,6}.congctl.selected instead. |
254 | | | 258 | |
255 | 20060814: | | 259 | 20060814: |
256 | The vt, vidcconsole, kbd, and rpckbd drivers on acorn32 have been | | 260 | The vt, vidcconsole, kbd, and rpckbd drivers on acorn32 have been |
257 | withdrawn. Use vidcvideo and pckbd instead. See the GENERIC | | 261 | withdrawn. Use vidcvideo and pckbd instead. See the GENERIC |
258 | kernel configuration for an example. X servers from the last | | 262 | kernel configuration for an example. X servers from the last |
259 | few years should cope. | | 263 | few years should cope. |
260 | | | 264 | |
261 | 20060703: | | 265 | 20060703: |
262 | MPACPI is no more. We always configure PCI interrupts using ACPI | | 266 | MPACPI is no more. We always configure PCI interrupts using ACPI |
263 | if we have an ACPI kernel. The option MPACPI_SCANPCI has been renamed | | 267 | if we have an ACPI kernel. The option MPACPI_SCANPCI has been renamed |
264 | to ACPI_SCANPCI. Thanks to work from fvdl. | | 268 | to ACPI_SCANPCI. Thanks to work from fvdl. |
265 | | | 269 | |
266 | 20060627: | | 270 | 20060627: |
267 | socket(2) has changed, and its system call has been versioned. | | 271 | socket(2) has changed, and its system call has been versioned. |
268 | For userlands with the old version of socket(2), make sure that | | 272 | For userlands with the old version of socket(2), make sure that |
269 | your kernel has 'options COMPAT_30' set, or else 'bad system call' | | 273 | your kernel has 'options COMPAT_30' set, or else 'bad system call' |
270 | errors will result. | | 274 | errors will result. |
271 | | | 275 | |
272 | Hints for a more successful build: | | 276 | Hints for a more successful build: |
273 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | | 277 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
274 | Use build.sh, but do not use its "expert mode": | | 278 | Use build.sh, but do not use its "expert mode": |
275 | This will automatically build the tools in the | | 279 | This will automatically build the tools in the |
276 | correct order, and it will keep the tools and the | | 280 | correct order, and it will keep the tools and the |
277 | new build products from interfering with the running | | 281 | new build products from interfering with the running |
278 | system. This will allow you to ignore most of the | | 282 | system. This will allow you to ignore most of the |
279 | other advice in this file. | | 283 | other advice in this file. |
280 | Build a new kernel first: | | 284 | Build a new kernel first: |
281 | This makes sure that any new system calls or features | | 285 | This makes sure that any new system calls or features |
282 | expected by the new userland will be present. This | | 286 | expected by the new userland will be present. This |
283 | helps to avoid critical errors when upgrading. | | 287 | helps to avoid critical errors when upgrading. |
284 | Use object directories: | | 288 | Use object directories: |
285 | This helps to keep stale object | | 289 | This helps to keep stale object |
286 | files from polluting the build if a Makefile "forgets" | | 290 | files from polluting the build if a Makefile "forgets" |
287 | about one. It also makes it easier to clean up after | | 291 | about one. It also makes it easier to clean up after |
288 | a build. It's also necessary if you want to use the | | 292 | a build. It's also necessary if you want to use the |
289 | same source tree for multiple machines. | | 293 | same source tree for multiple machines. |
290 | To use object directories with build.sh: | | 294 | To use object directories with build.sh: |
291 | a) invoke build.sh with the "-M" or "-O" options. | | 295 | a) invoke build.sh with the "-M" or "-O" options. |
292 | To use object directories without using build.sh: | | 296 | To use object directories without using build.sh: |
293 | a) cd /usr/src ; make cleandir | | 297 | a) cd /usr/src ; make cleandir |
294 | b) Add "OBJMACHINE=yes" to /etc/mk.conf | | 298 | b) Add "OBJMACHINE=yes" to /etc/mk.conf |
295 | c) Add "MKOBJDIRS=yes" to /etc/mk.conf | | 299 | c) Add "MKOBJDIRS=yes" to /etc/mk.conf |
296 | d) cd /usr/src ; make build | | 300 | d) cd /usr/src ; make build |
297 | Note that running "make obj" in a directory will create | | 301 | Note that running "make obj" in a directory will create |
298 | in obj.$MACHINE directory. | | 302 | in obj.$MACHINE directory. |
299 | Build to a DESTDIR: | | 303 | Build to a DESTDIR: |
300 | This helps to keep old installed files (especially libraries) | | 304 | This helps to keep old installed files (especially libraries) |
301 | from interfering with the new build. | | 305 | from interfering with the new build. |
302 | To build to a DESTDIR with build.sh, use the "-D" option. | | 306 | To build to a DESTDIR with build.sh, use the "-D" option. |
303 | To build to a DESTDIR without using build.sh, set the DESTDIR | | 307 | To build to a DESTDIR without using build.sh, set the DESTDIR |
304 | environment variable before running make build. It should be | | 308 | environment variable before running make build. It should be |
305 | set to the pathname of an initially empty directory. | | 309 | set to the pathname of an initially empty directory. |
306 | Problems: if you do not use build.sh, you might need to | | 310 | Problems: if you do not use build.sh, you might need to |
307 | update critical utilities without using DESTDIR since | | 311 | update critical utilities without using DESTDIR since |
308 | nothing is executed from what is installed in DESTDIR. | | 312 | nothing is executed from what is installed in DESTDIR. |
309 | (See critical utils, below.) | | 313 | (See critical utils, below.) |
310 | Build often: | | 314 | Build often: |
311 | This keeps critical utilities current enough to not choke | | 315 | This keeps critical utilities current enough to not choke |
312 | on any other part of the source tree that depends on up to | | 316 | on any other part of the source tree that depends on up to |
313 | date functionality. If you use build.sh, you should not have | | 317 | date functionality. If you use build.sh, you should not have |
314 | this problem. | | 318 | this problem. |
315 | | | 319 | |
316 | What to do if things don't work: | | 320 | What to do if things don't work: |
317 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | | 321 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
318 | When things don't work there is usually a few things that commonly | | 322 | When things don't work there is usually a few things that commonly |
319 | should be done. | | 323 | should be done. |
320 | 1) make includes | | 324 | 1) make includes |
321 | This should be done automatically by make build. | | 325 | This should be done automatically by make build. |
322 | 2) cd share/mk && make install | | 326 | 2) cd share/mk && make install |
323 | Again, automatically done by make build. | | 327 | Again, automatically done by make build. |
324 | | | 328 | |
325 | Failsafe rebuild of a small part of the tree: | | 329 | Failsafe rebuild of a small part of the tree: |
326 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | | 330 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
327 | To make sure you rebuild something correctly you want to do | | 331 | To make sure you rebuild something correctly you want to do |
328 | something like the following: | | 332 | something like the following: |
329 | 1) Make sure the includes and .mk files are up to date. | | 333 | 1) Make sure the includes and .mk files are up to date. |
330 | 2) Make sure any program used to build the particular | | 334 | 2) Make sure any program used to build the particular |
331 | utility is up to date. (yacc, lex, etc...) | | 335 | utility is up to date. (yacc, lex, etc...) |
332 | 3) cd ...path/to/util... | | 336 | 3) cd ...path/to/util... |
333 | make cleandir | | 337 | make cleandir |
334 | rm ...all obj directories... | | 338 | rm ...all obj directories... |
335 | make cleandir # yes, again | | 339 | make cleandir # yes, again |
336 | make obj | | 340 | make obj |
337 | make depend && make | | 341 | make depend && make |
338 | | | 342 | |
339 | Failsafe rebuild of the entire tree: | | 343 | Failsafe rebuild of the entire tree: |
340 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | | 344 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
341 | If you really want to make sure the source tree is clean and | | 345 | If you really want to make sure the source tree is clean and |
342 | ready for a build try the following. Note that sourcing /etc/mk.conf | | 346 | ready for a build try the following. Note that sourcing /etc/mk.conf |
343 | (a make(1) Makefile) in this manner is not right, and will not work | | 347 | (a make(1) Makefile) in this manner is not right, and will not work |
344 | for anyone who uses any make(1) features in /etc/mk.conf. | | 348 | for anyone who uses any make(1) features in /etc/mk.conf. |
345 | | | 349 | |
346 | ---cut here--- | | 350 | ---cut here--- |
347 | #!/bin/sh | | 351 | #!/bin/sh |
348 | . /etc/mk.conf | | 352 | . /etc/mk.conf |
349 | | | 353 | |
350 | if [ -z $NETBSDSRCDIR ] ; then | | 354 | if [ -z $NETBSDSRCDIR ] ; then |
351 | NETBSDSRCDIR=/usr/src | | 355 | NETBSDSRCDIR=/usr/src |
352 | fi | | 356 | fi |
353 | if [ \! -d $NETBSDSRCDIR ] ; then | | 357 | if [ \! -d $NETBSDSRCDIR ] ; then |
354 | echo Unable to find sources | | 358 | echo Unable to find sources |
355 | exit 1 | | 359 | exit 1 |
356 | fi | | 360 | fi |
357 | find $NETBSDSRCDIR -name \*.o -o -name obj.\* -o -name obj -exec rm \{\} \; | | 361 | find $NETBSDSRCDIR -name \*.o -o -name obj.\* -o -name obj -exec rm \{\} \; |
358 | | | 362 | |
359 | if [ -z $BSDOBJDIR ] ; then | | 363 | if [ -z $BSDOBJDIR ] ; then |
360 | BSDOBJDIR=/usr/obj | | 364 | BSDOBJDIR=/usr/obj |
361 | fi | | 365 | fi |
362 | if [ -d $BSDOBJDIR ] ; then | | 366 | if [ -d $BSDOBJDIR ] ; then |
363 | rm -rf $BSDOBJDIR | | 367 | rm -rf $BSDOBJDIR |
364 | fi | | 368 | fi |
365 | | | 369 | |
366 | cd $NETBSDSRCDIR && make cleandir | | 370 | cd $NETBSDSRCDIR && make cleandir |
367 | | | 371 | |
368 | ---cut here--- | | 372 | ---cut here--- |
369 | | | 373 | |
370 | Critical utilities: | | 374 | Critical utilities: |
371 | ^^^^^^^^^^^^^^^^^^^ | | 375 | ^^^^^^^^^^^^^^^^^^^ |
372 | usr.bin/compile_et | | 376 | usr.bin/compile_et |
373 | usr.bin/make | | 377 | usr.bin/make |
374 | usr.bin/yacc | | 378 | usr.bin/yacc |
375 | usr.bin/lex | | 379 | usr.bin/lex |
376 | usr.bin/xlint | | 380 | usr.bin/xlint |
377 | usr.bin/config | | 381 | usr.bin/config |
378 | | | 382 | |
379 | Other problems and possible solutions: | | 383 | Other problems and possible solutions: |
380 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | | 384 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
381 | Symptom:Complaints involving a Makefile. | | 385 | Symptom:Complaints involving a Makefile. |
382 | Fix: Rebuild usr.bin/make: | | 386 | Fix: Rebuild usr.bin/make: |
383 | cd usr.bin/make && make && make install | | 387 | cd usr.bin/make && make && make install |
384 | Or, a failsafe method if that doesn't work: | | 388 | Or, a failsafe method if that doesn't work: |
385 | cd usr.bin/make && cc *.c */*.c -I . -o make && mv make /usr/bin | | 389 | cd usr.bin/make && cc *.c */*.c -I . -o make && mv make /usr/bin |
386 | | | 390 | |
387 | Fix: Make sure .mk files are up to date. | | 391 | Fix: Make sure .mk files are up to date. |
388 | cd share/mk && make install | | 392 | cd share/mk && make install |
389 | | | 393 | |
390 | Symptom:Kernel `config' fails to configure any kernel, including GENERIC. | | 394 | Symptom:Kernel `config' fails to configure any kernel, including GENERIC. |
391 | Fix: Rebuild usr.bin/config | | 395 | Fix: Rebuild usr.bin/config |
392 | | | 396 | |
393 | Symptom: | | 397 | Symptom: |
394 | Fix: Rebuild usr.bin/yacc | | 398 | Fix: Rebuild usr.bin/yacc |
395 | | | 399 | |
396 | Symptom: | | 400 | Symptom: |
397 | Fix: Rebuild usr.bin/lex | | 401 | Fix: Rebuild usr.bin/lex |
398 | | | 402 | |
399 | Symptom: | | 403 | Symptom: |
400 | Fix: rm /usr/lib/libbfd.a | | 404 | Fix: rm /usr/lib/libbfd.a |
401 | | | 405 | |
402 | Symptom:Obsolete intermediate files are used during compilation | | 406 | Symptom:Obsolete intermediate files are used during compilation |
403 | Fix: Try the following sequence of commands in the directory in question. | | 407 | Fix: Try the following sequence of commands in the directory in question. |
404 | make cleandir; rm `make print-objdir`; make cleandir; make obj | | 408 | make cleandir; rm `make print-objdir`; make cleandir; make obj |
405 | (If you built the tree without "make obj" in the past, obsolete files | | 409 | (If you built the tree without "make obj" in the past, obsolete files |
406 | may remain. The command tries to clean everything up) | | 410 | may remain. The command tries to clean everything up) |
407 | | | 411 | |
408 | Symptom:.../sysinst/run.c:xx: warning: initialization from incompatible pointer type | | 412 | Symptom:.../sysinst/run.c:xx: warning: initialization from incompatible pointer type |
409 | Fix: Rebuild and install usr.bin/menuc | | 413 | Fix: Rebuild and install usr.bin/menuc |
410 | | | 414 | |
411 | Symptom:mklocale not found during build in share/locale/ctype | | 415 | Symptom:mklocale not found during build in share/locale/ctype |
412 | Fix: Build and install usr.bin/mklocale | | 416 | Fix: Build and install usr.bin/mklocale |
413 | | | 417 | |
414 | Symptom:undefined reference to `__assert13' or `__unsetenv13' | | 418 | Symptom:undefined reference to `__assert13' or `__unsetenv13' |
415 | Fix: Rebuild and install lib/libc | | 419 | Fix: Rebuild and install lib/libc |
416 | | | 420 | |
417 | Symptom:usr.bin/config fails to build. | | 421 | Symptom:usr.bin/config fails to build. |
418 | Fix: Try building with -DMAKE_BOOTSTRAP added to CFLAGS in Makefile. | | 422 | Fix: Try building with -DMAKE_BOOTSTRAP added to CFLAGS in Makefile. |
419 | | | 423 | |
420 | Symptom:undefined reference to `getprogname' or `setprogname' | | 424 | Symptom:undefined reference to `getprogname' or `setprogname' |
421 | Fix: Rebuild and install lib/libc | | 425 | Fix: Rebuild and install lib/libc |
422 | | | 426 | |
423 | Symptom:lint does not understand the '-X' option | | 427 | Symptom:lint does not understand the '-X' option |
424 | Fix: May need to build & install libs with NOLINT=1 before rebuilding lint | | 428 | Fix: May need to build & install libs with NOLINT=1 before rebuilding lint |