Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. =================================================================== RCS file: /ftp/cvs/cvsroot/src/UPDATING,v rcsdiff: /ftp/cvs/cvsroot/src/UPDATING,v: warning: Unknown phrases like `commitid ...;' are present. retrieving revision 1.244 retrieving revision 1.278 diff -u -p -r1.244 -r1.278 --- src/UPDATING 2013/05/31 10:39:02 1.244 +++ src/UPDATING 2017/02/08 10:56:12 1.278 @@ -1,4 +1,4 @@ -$NetBSD: UPDATING,v 1.244 2013/05/31 10:39:02 mrg Exp $ +$NetBSD: UPDATING,v 1.278 2017/02/08 10:56:12 kre Exp $ This file (UPDATING) is intended to be a brief reference to recent changes that might cause problems in the build process, and a guide for @@ -11,11 +11,169 @@ Note that much of the advice in this UPD build.sh existed. Nevertheless, the advice here may be useful for working around specific problems with build.sh. +Sections are marked with "^^^^^". After the section on "Recent changes" +are several sections containing more general information. + See also: BUILDING, build.sh, Makefile. Recent changes: ^^^^^^^^^^^^^^^ +20170107: + various arch dependent libc/exect.S files were removed + Either remove the obj directory (lib/libc) or do a + clean build. (This is a bug in the make system, it should + be corrected without human intervention, but isn't.) + +20170104: + xinput build options have changed. + Remove the obj directory (external/mit/xorg/bin/xinput) + if you build.sh -u + +20170103: + a new version of flex has been imported. + Remove the file from obj (external/bsd/flex) + if you build.sh -u + +20161014: + a new version of OpenSSL has been imported. + Remove the files from obj (crypto/external/bsd/openssl) + if you build.sh -u + +20161009: + a new version of dhcpcd has been imported with slightly changed + build infrastructure. When doing a build.sh -u this requires + pruning the external/bsd/dhcpcd objdir. + +20160914: + i386, amd64, shark, ofppc and macppc have joined shark and x68k + ports in using xorg-server 1.18. This requires a clean destdir + and a clean objdir. + +20160527: + i386 needs a full cleandir or objdir deletion because PIE has + been enabled. (see the amd64 entry two down for further info) + +20160418: + libedit needs manual removal of all autogenerated files since + some of them are not autogenerated anymore. Remember that there + might be two copies of libedit if your platform builds "compat". + +20160410: + amd64 needs full "make cleandir" or deletion of objdir now that + PIE has been enabled for amd64. PIE, or position-independent + executables, means all code, including executables and not just + shared libraries, is position-independent and hence able to be + relocated by ASLR, address space layout randomization. + + The change was made in Makefile variables for compiler and + linker flags, for which make(1) does not record dependencies, + hence it is unable to detect that all .o files need rebuilding. + + Partial rebuilds with some modified source files will likely + fail when linking executables, since the linker refuses to mix + position-independent code with position-dependent code in + position-independent executables: + + .../x86_64--netbsd/bin/ld: foo.o: relocation R_X86_64_32 against `...' cannot be used when making a shared object; recompile with -fPIC + +20160401: + Ports switching to GCC 5.3 will need a full "make cleandir". + Some people have found that cleandir is not sufficient, so if + in doubt delete the entire object directory tree for gcc. + +20160306: + NetBSD's regexp implementation is now part of libnbcompat. + Nblex, nbm4, nbpax, nbsed use it and they may crash on + non-NetBSD hosts if linked with stale object files produced + while they included a non-NetBSD regex.h. + In any case, you should "make cleandir" at least these tools + before updating your toolchain. + +20160125: + Dtrace has been enabled by default on some architectures. + When doing an update build, make sure to clean the etc/mtree + object directory before starting the build - otherwise the + needed directories in destdir will not be created. + An easy way to do this is: + cd src/etc/mtree && $TOOLDIR/bin/nbmake-$arch cleandir + +20150818: + New acpica requires "make cleandir" in src/external/bsd/acpica + again. + +20150413: + New acpica requires "make cleandir" and reinstalling yacc + in /usr/src/external/bsd/byacc and /usr/src/tools/yacc and + also "make cleandir" in /usr/src/external/bsd/acpica. + +20150404: + Lint changes require a full rebuild of the tool, so make + sure to build without -u option to build.sh, or manually + do a make cleandir in src/tools/lint1 and + src/usr.bin/xlint. + +20150310: + Improvements to openssl for arm mean that update builds of + the openssl libraries will fail. A make cleandir in + external/bsd/openssl/lib is needed + +20141026: + A mishap during the import of pppd may cause your corruption + in your cvs directory if you happened to do a cvs update + during a short period of time. To fix, just remove the + directory src/external/bsd/ppp/dist/pppd completely + and let cvs restore it on next update. + +20140721: + The src/external/mit/lua/src directory was accidentally created + and then deleted in the CVS repository. If you get errors like + + cvs [update aborted]: cannot open directory + /cvsroot/src/external/mit/lua/src: No such file or directory + + then delete your local copy of that directory tree and try again. + +20140530: + ARM eABI switched to DWARF based exception handling. This requires + rebuilding all C++ code. It is strongly advised to do a clean build. + +20140131: + The new compiler_rt/libc integration moved a few things. It is strongly + advised to do a clean build. At least lib/libc, the compat version(s) + of libc, libkern, rump and the kernels need to be cleaned. + +20131227: + 1. The new ntpd runs in a restricted mode to prevent amplification + attacks. If you need ntpdc to work you need to explicitly enable + mode7 in your config file. Make sure you put the necessary restrict + statements to avoid being exposed. + 2. strncat has moved from lib/libc to common/lib/libc; you might need + to make clean in libc + +20131129: + The GMP sources were updated, and builds will likely fail without + cleaning their build trees for both tools and in-tree, like below. + +20131128: + The MPC and MPFR sources were updated, and builds may require their + tools and in-tree directories cleaned for successful updates. + +20130605: + The kernel option FAST_IPSEC no longer exists, it's been renamed + to IPSEC (and the older IPSEC version removed). + +20130605: + Previous freetype installations eroneously installed private + header files. If you are building against a non-empty $DESTDIR, + please remove ${DESTDIR}//usr/X11R7/include/freetype2/freetype/. + +20130531: + The xdm update may cause build failure due to xdm.man being + in the obj tree. Make sure to ensure any like this: + nbmake: nbmake: don't know how to make xdm.man. Stop + is fixed by deleting the xdm.man in the obj tree. + 20130530: Updates of many xsrc packages will leave old .pc files around. Best to clean out the xsrc objdir entirely before rebuilds. @@ -628,3 +786,13 @@ Fix: May need to build & install libs Symptom:Update build fails in src/tools/gcc complaining that a variable (e.g. CPPFLAGS) has changed since the previous run. Fix: Run "nbmake-${ARCH} clean" in src/tools/gcc or do a clean build. + +Symptom:cvs [update aborted]: cannot open directory /cvsroot/src/...: + No such file or directory. +Cause: If a directory is created by mistake, then it is sometimes + deleted from the CVS repository using administrative commands + that bypass the normal cvs access controls. If your cvs working tree + contains references to a directory that has been deleted on the + server in this way, then "cvs update" reports this error. +Fix: Recursively delete the affected directory from your working tree + and try the update again.