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.256 retrieving revision 1.293 diff -u -p -r1.256 -r1.293 --- src/UPDATING 2014/07/23 08:37:03 1.256 +++ src/UPDATING 2018/04/15 17:22:03 1.293 @@ -1,4 +1,4 @@ -$NetBSD: UPDATING,v 1.256 2014/07/23 08:37:03 apb Exp $ +$NetBSD: UPDATING,v 1.293 2018/04/15 17:22:03 jakllsch 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,174 @@ 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: ^^^^^^^^^^^^^^^ +20180414: + Existing binutils was migrated to binutils.old. Manual + removal of tools/binutils objects directory may be required + to fix tools build failure. + +20180311: + bdftopcf was updated and may need cleaning in the + src/external/mit/xorg/tools/bdftopcf subdirectory if there are + link errors. + +20180212: + between OpenSSL and GCC updates, many things may fail to build. + any failure that looks like GCC or openssl is best handled by + a clean destdir and objdir. Full cleandir and destdir deletion + is recommended if build failures occur. + +20171225: + removal of the vadvise syscall requires manual removal of all + associated files from the libc build object directory (including + the .depend files) - a command like: + cd $OBJ && find . -type d -name libc | xargs rm -rf + For architectures that support multiple "compat" binary targets, + you'll need to cleanup both the regular libc directory and the + compat ones (the above command will do that). + +20171010: + a change to the build structure of external/bsd/acpica/bin/iasl + means that its objdir (or *.d and .depend at least) might need + to be manually removed - or a build done once without -u. + +20170822: + a new version of GMP has been imported and probably + will break parts of builds related to themselves or GCC, both + in the tools and the native section. Remove all GCC, GMP, MPFR + and MPC objdirs or build once without -u. + +20170816: + a new version of MPFR and MPC have been imported and probably + will break parts of builds related to themselves or GCC, both + in the tools and the native section. Remove all GCC, GMP, MPFR + and MPC objdirs or build once without -u. + +20170402: + a new version of dhcpcd has been imported, which does not support + update builds from the previous version. Remove your + external/bsd/dhcpcd object dir or build once without -u. + +20170211: + a new terminfo database has been imported. + The structure of it has changed slightly from prior versions and + an updated tic tool is required. + If you build.sh, don't use -u + +20170207: + various arch dependent libc/exect.S files were removed + Either remove the obj directories (lib/libc and compat/amd64/i386/lib + if it exists) 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 @@ -677,3 +840,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.