aboutsummaryrefslogtreecommitdiff
path: root/Makefile.inc1
Commit message (Collapse)AuthorAgeFilesLines
* add the time(1) command to the list of install toolsWolfram Schneider2021-08-011-1/+1
| | | | | | Reported by: dhw Approved by: dhw Differential Revision: https://reviews.freebsd.org/D31373
* `make buildworld' with time logging for each stageWolfram Schneider2021-08-011-6/+7
| | | | | | | PR: 257141 Reviewed by: sjg,emaste Approved by: emaste Differential Revision: https://reviews.freebsd.org/D31154
* pkgbase: improve pkg --version parsingEd Maste2021-07-281-1/+1
| | | | | | | | | | In some cases `pkg --version` might produce unexpected or additional output. Use a regex /^[0-9.]+$/ to match only the line containing the version number. Reported by: Michael Butler on freebsd-current@ Fixes: 4e224e4be7c3 ("pkgbase: accommodate pkg < 1.17") Sponsored by: The FreeBSD Foundation
* pkgbase: accommodate pkg < 1.17Ed Maste2021-07-271-3/+12
| | | | | | | | | | | | | | | | 6cafdee71d2b adapted the pkgbase build for 1.17, but broke Cirrus-CI's use of PKG_FORMAT=tar (the quarterly package set still has pkg 1.16). Because of this I disabled the pkgbase build and test in 2bfba2a04b05. Now, check `pkg --version` and use the old logic for < 1.17. To be reverted once we no longer encounter pkg 1.16 in Cirrus-CI (i.e., via GCP cloud images) to avoid keeping this extra complexity around. PR: 257422 Reviewed by: manu Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D31324
* pkgbase: Track pkg 1.17Emmanuel Vadot2021-07-221-3/+3
| | | | With pkg 1.17 the extention is always .pkg, packing_format is also now deprecated.
* Don't build lldb-tablegen if MK_LLDB=noAlex Richardson2021-07-191-6/+9
| | | | | | Split out from D31060. Reviewed by: emaste
* Remove svnlite.John Baldwin2021-06-111-1/+0
| | | | | Reviewed by: bcr, imp, emaste Differential Revision: https://reviews.freebsd.org/D30737
* Remove 'make update'.John Baldwin2021-06-111-27/+0
| | | | | | | | | | | | In the CVS days this used be a wrapper around either CVS or CVSup and used to support updating src, doc, and ports checkouts. With the move to subversion this only supported updating src and was itself a wrapper around 'svn update'. With Git, users are probably better off using appropriate Git commands directly to update without needing an explicit make target as a wrapper. Reviewed by: bcr, imp, emaste Differential Revision: https://reviews.freebsd.org/D30736
* libpmc: always generate libpmc_events.cMitchell Horne2021-05-311-3/+1
| | | | | | | | | | The jevents build tool will create an empty table if it doesn't find any events, so we can remove the extra $MACHINE_CPUARCH checks. Reviewed by: gnn, ray, emaste MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D30531
* Add elfctl to toolchain.Marcin Wojtas2021-05-211-3/+5
| | | | | | | | | | Add elfctl program to toolchain to allow modifying ELF feature flags during system build. Submitted by: Dawid Gorecki <dgr@semihalf.com> Obtained from: Semihalf Sponsored by: Stormshield Differential Revision: https://reviews.freebsd.org/D29552
* Makefile.inc1: unbreak bootstrap when kbdcontrol does not existGlen Barber2021-03-241-1/+2
| | | | | | | | Reviewed by: arichardson MFC after: 12 hours MFC target: stable/13, releng/13.0 Differential Review: https://reviews.freebsd.org/D29200 Sponsored by: Rubicon Communications, LLC ("Netgate")
* Revert "bootstrap: add tic to the bootstrap tools"Baptiste Daroussin2021-03-181-5/+0
| | | | | | | | | Since we don't build and install the terminfo db anymore this is not needed This reverts commit b6a51d39e3a2e2f75d5b42a8c17a531063258a15. This reverts commit e5e4845959ac60110677df302a68c220dff75abe. This reverts commit 0af562d7e1850bbef230d30805c101b26588a3ed.
* Makefile.inc1 "Avoid duplicate script for target" warningAlex Richardson2021-03-011-3/+0
| | | | This happens if -DBOOTSTRAP_ALL_TOOLS or when building on non-FreeBSD.
* bootstrap: fix a last edit typoBaptiste Daroussin2021-02-251-1/+1
| | | | Reported by: cy
* bootstrap: add tic to the bootstrap toolsBaptiste Daroussin2021-02-251-0/+8
| | | | | | | tic is necessary early in the build to be able to build the terminfo database later on. Tested by: manu, jbeich
* Remove the MK_LIBCPLUSPLUS optionAlex Richardson2021-02-011-4/+4
| | | | | | | | This option has been equivalent to any form of C++ support since libstdc++ was removed. Therefore, replace all MK_LIBCPLUSPLUS uses with MK_CXX. Reviewed By: emaste Differential Revision: https://reviews.freebsd.org/D27974
* build: remove LIBPTHREAD/LIBTHR build optionsKyle Evans2021-01-221-5/+1
| | | | | | | | | | | | | | | | | | WITHOUT_LIBTHR has been broken for a little over five years now, since the xz 5.2.0 update introduced a hard liblzma dependency on libthr, and building a useful system without threading support is becoming increasingly more difficult. Additionally, in the five plus years that it's been broken more reverse dependencies have cropped up in libzstd, libsqlite3, and libcrypto (among others) that make it more and more difficult to reconcile the effort needed to fix these options. Remove the broken options. PR: 252760 Reviewed by: brooks, emaste, kib Differential Revision: https://reviews.freebsd.org/D28263
* Bump CURRENT to 14.0Glen Barber2021-01-221-2/+2
| | | | | | | This one goes to 14. Approved by: re (implicit) Sponsored by: Rubicon Communications, LLC ("Netgate")
* pkgbase: allow update-packages for first-run of packagingKyle Evans2021-01-211-1/+11
| | | | | | | | | | | | | | | | | | | | | | | | If ${REPODIR}/${PKG_ABI} does not exist when we begin real-update-packages, skip the comparison with the non-existent previous repository and just finish the repo off. This allows external scripts to just assume they can run `update-packages` rather than figuring out if they'd previously run `packages` for this Version/Arch combo. PKG_VERSION_FROM_DIR was added so that we could perhaps detect the three distinct cases: 1.) If the repo has not yet been created, PKG_VERSION_FROM_DIR will be empty. 2.) If the repo is in some intermediate state between created and fully initialized, PKG_VERSION_FROM_DIR may point to the ABI directory. 3.) If the repo is fully initialized, then PKG_VERSION_FROM_DIR points to the latest build to compare to. Option #2 is explicitly unhandled at the moment, but this is no different than it was before. Reviewed-by: manu Differential-Revision: https://reviews.freebsd.org/D28229
* pkgbase: differentiate package versions for ALPHA/BETA/PRERELEASE/RC phasesEmmanuel Vadot2021-01-191-8/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The current postfix conversions are: CURRENT / STABLE / PRERELEASE, 12.x-CURRENT becomes 12.snapYYYYMMDDhhmmss ALPHAx -> .ax, so 11.3-ALPHA1 becomes 11.3.a1.YYYYMMDDhhmmss BETAx -> .bx, so 12.1-BETA2 becomes 12.1.b2.YYYYMMDDhhmmss RCx -> .rcx, so 13.0-RC3 becomes 13.0.rc3.YYYYMMDDhhmmss RELEASE -> (nothing), so 12.1-RELEASE becomes 12.1 RELEASE-pX -> pX, so 12.1-RELEASE-p1 becomes 12.1p1 Note that for development branches we will start to drop the minor version component entirely, which more closely matches how these branches are physically named (stable/NN). snap is a new prefix that was added to pkg in [0], which is simply a more verbose version of the current ".s" used. As noted, build timestamps are also added to ALPHA/BETA/RC versions. This is largely irrelevant for re@ snapshots because they will only produce one set of snapshots for each alpha/beta/rc, but external folks may produce multiple in that timeframe -- at least for alpha. For them, it is imperative that the builds have a differentiating characteristic like this rather than multiple builds across multiple revisions being versioned identically. [0] https://github.com/freebsd/pkg/pull/1929 Reviewed by: gjb, manu Submitted by: rene (original, original version) Differential Revision: https://reviews.freebsd.org/D28167
* pkgbase: limit PKG_VERSION_FROM calculation to real-update-packagesKyle Evans2021-01-181-1/+1
| | | | | | | PKG_ABI is defined in some other targets that do not need to shell out and calculate PKG_VERSION_FROM. Moreover, it produces extra errors when bootstrapping an initial pkgbase repo, as the /latest link doesn't exist yet.
* pkgbase: collapse -PRERELEASE into STABLE/CURRENT case for version suffixKyle Evans2021-01-171-3/+1
| | | | | | | | | | -PRERELEASE exists as a given stable/X branch while the next minor version release is in progress. From a functional standpoint, it should be treated as -STABLE since it'll typically be a superset of what's included in the concurrent releng branch. Reviewed by: gjb Differential Revision: https://reviews.freebsd.org/D28166
* pkgbase: default to installing all specified kernelsKyle Evans2021-01-171-2/+13
| | | | | | | | | These only get staged off to the side, not installed into the system. Let's change the default for packages/update-packages to be less surprising. MFC after: 1 week Reviewed by: manu, meena <me igalic co> Differential Revision: https://reviews.freebsd.org/D28190
* Revert "pkgbase: differentiate package versions for ALPHA/BETA/PRERELEASE/RC ↵Emmanuel Vadot2021-01-141-13/+9
| | | | | | | | | | | | | | | | | | | | | phases" This reverts commit aef769614f921660cb0262412426034cf5395ae5. While the package names are a bit prettier this confuse pkg about upgrading : $ pkg version -t 13.0.s2021011313063 13.0.a1 > $ pkg version -t 13.0.s2021011313063 13.0_ALPHA1 < Note that the current scheme isn't good when bumping from ALPHA to BETA or even BETA to RC: $ pkg version -t 13.0_ALPHA1 13.0_BETA1 = $ pkg version -t 13.0_BETA1 13.0_RC1 = But more thoughts have to be put into this renaming.
* pkgbase: differentiate package versions for ALPHA/BETA/PRERELEASE/RC phasesEmmanuel Vadot2021-01-141-9/+13
| | | | | | | | | | | | | | The current postfix conversions are: CURRENT / STABLE -> .sYYYYMMDDhhmmss ALPHAx -> .ax, so 11.3-ALPHA1 becomes 11.3.a1 BETAx -> .bx, so 12.1-BETA2 becomes 12.1.b2 RCx -> .rcx, so 13.0-RC3 becomes 13.0.rc3 PRERELEASE -> .p, so 11.3-PRERELEASE becomes 11.3.p RELEASE -> (nothing), so 12.1-RELEASE becomes 12.1 Submitted by: rene (original version) Differential Revision: https://reviews.freebsd.org/D20734
* Makefile.inc1: Avoid using release/Makefile for VERSION.Bryan Drewery2021-01-081-7/+5
| | | | | | | | | | release/Makefile.inc1 has git executions that were being ran for each of these lookups. The results were not needed so just lookup what we want directly instead. Reviewed by: gjb, rlibby, emaste (maybe) Sponsored by: Dell EMC Differential Revision: https://reviews.freebsd.org/D27643
* Rename NO_WERROR -> MK_WERROR=noAlex Richardson2021-01-071-5/+5
| | | | | | | | As suggested in D27598. This also supports MK_WERROR.clang=no and MK_WERROR.gcc=no to support the existing NO_WERROR.<compiler> uses. Reviewed By: brooks Differential Revision: https://reviews.freebsd.org/D27601
* Stop passing MK_WARNS=no for bootstrap toolsAlex Richardson2021-01-071-5/+5
| | | | | | | | | | | | | | | | | I got annoyed by the number of warnings that the CheriBSD build was emitting. It turns out that we are emitting lots of warnings during bootstrap because bootstrap tools are built with the default compiler flags and ignore the warnings flags that are set in bsd.sys.mk. Looking at git blame, it appears that MK_WARNS=no has been passed since rS112869, replacing the -DNO_WERROR option that was added in rS87775. This commit changes MK_WARNS=no back to -DNO_WERROR. We need to pass -DNO_WERROR, since the system compiler might have new warnings that we don't know about yet, and we shouldn't fail the build in that case. Reviewed By: imp, brooks Differential Revision: https://reviews.freebsd.org/D27598
* Add mkimg to the list of bootstrap toolsAlex Richardson2021-01-071-0/+9
| | | | | | | | | | | Having this as part of the bootstrap tools is useful to build disk images to boot in QEMU (especially when building on a Linux/macOS host where mkimg is not available). We have been bootstrapping mkimg in CheriBSD for a long time (using LOCAL_XTOOL_DIRS) but I believe this is also useful upstream. Reviewed By: emaste, brooks Differential Revision: https://reviews.freebsd.org/D27602
* vtfontcvt is part of bootstrap toolset and should always be builtToomas Soome2021-01-061-2/+2
| | | | Reported by: Peter Jeremy
* ncurses: only keep the version with widechar supportBaptiste Daroussin2021-01-051-3/+2
| | | | | | | | | | | | | | | | Only keep the widechar version of ncurses as libncursesw.so.9 Keep the old name to avoid breaking the ABI compatibility (the non widechar version libncurses.so.9 is not binary compatible with libncursesw.so.9) since all ports and base are already only linking against the widechar version we can simply remove libncurses.so.9 Since the .9 version only lived in the dev branch and never ended in a release, it is simply removed and not added to any binary compat package. Add symlinks to keep build time compatibility for anyone linking against -lncurses
* pkgbase: rename PKGSIGNKEY to PKG_REPO_SIGNING_KEYEmmanuel Vadot2021-01-041-2/+2
| | | | | | | | | this way, it'll be automatically picked up by poudriere That's quite handy when building pkgbase! Submitted by: Mina Galić <me@igalic.co> Reviewed By: bapt, bcr (manpages) Differential Revision: https://reviews.freebsd.org/D27690
* Remove additional GDB leftovers missed in r368667Ed Maste2020-12-151-2/+1
| | | | Notes: svn path=/head/; revision=368669
* crunchgen: fix NULL-deref bug introduced in r364647Alex Richardson2020-12-041-1/+1
| | | | | | | | | | | | | | | | | | | | | | | While porting over the local changes from CheriBSD for upstreaming, I accidentally committed a broken version of find_entry_point(): we have to return NULL if the value is not found instead of a value with ep->name == NULL, since the checks in main were changed to check ep instead of ep->name for NULL. This only matters if the crunched tool cannot be found using normal lookup and one of the fallback paths is used, so it's unlikely to be triggered in rescue. However, I noticed that one of our CheriBSD test scripts was failing to run commands under `su` on minimal disk images where all binaries are hardlinks to a `cheribsdbox` tool generated with crunchgen. This also updates the bootstrapping check in Makefile.inc1 to bootstrap crunchgen up to the next version bump. Reviewed By: kevans Differential Revision: https://reviews.freebsd.org/D27474 Notes: svn path=/head/; revision=368337
* Add lists for customizing legacy and bootstrap-tools.Bryan Drewery2020-11-201-3/+10
| | | | | | | | | Reviewed by: arichardson Sponsored by: Dell EMC Differential Revision: https://reviews.freebsd.org/D27200 Notes: svn path=/head/; revision=367910
* [POWERPC64LE,POWEPCSPE] set default kernel config for powerpc64le and ↵Alfredo Dal'Ava Junior2020-11-201-0/+4
| | | | | | | | | | | | | | powerpcspe variants Default KERNCONF for powerpc64le should be GENERIC64, and powerpcspe should select MPC85XXSPE Reviewed by: bdragon,emaste Sponsored by: Eldorado Research Institute (eldorado.org.br) Differential Revision: https://reviews.freebsd.org/D27257 Notes: svn path=/head/; revision=367907
* Makefile.inc1: remove no-longer required variableAlex Richardson2020-11-131-5/+0
| | | | | | | | | This variable is unsed since r364760 but I forgot to delete it in that commit. Reported By: bdrewery Notes: svn path=/head/; revision=367636
* fix the docs, this was always wrong... In some cases, DISTDIR is setJohn-Mark Gurney2020-11-041-1/+2
| | | | | | | | | | | automatically by tools via /etc/make.conf, so remind people (me) where to find where it's set.. It would be nice for someone to document what DISTDIR is better than: where the file for a distribution gets installed Notes: svn path=/head/; revision=367354
* pkgbase: Add incremental packagesEmmanuel Vadot2020-11-021-6/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds a new target update-packages which will create the new packages compared to the last run. This is how to use it: At this point we cut a release $ make buildworld ... $ make buildkernel $ make packages There is now a PKG_VERSION directory with latest link pointing to it Distribute the packages to server $ something something that update the source tree $ make buildworld ... $ make buildkernel $ make update-packages You know have a PKG_VERSION directory in the REPODIR and latest link pointing to it. In PKG_VERSION dir only the packages which differs from the latest run are named PKG_VERSION, otherwise the old packages are there. The process is : Build the new packages in the PKG_VERSION directory Compare the internal data with the PKG_VERSION_FROM version. The comparison is done by checking the internal hash of the packages. By default PKG_VERSION_FROM is set to what the latest link points to. If the old and new version matches, we rm the new package and cp the old one. Differential Revision: https://reviews.freebsd.org/D25984 Notes: svn path=/head/; revision=367277
* flua: Add a libjail moduleRyan Moeller2020-10-241-0/+1
| | | | | | | | | | | | | | | libjail is pretty small, so it makes for a good proof of concept demonstrating how a system library can be wrapped to create a loadable Lua module for flua. * Introduce 3lua section for man pages * Add libjail module Reviewed by: kevans, manpages Relnotes: yes Differential Revision: https://reviews.freebsd.org/D26080 Notes: svn path=/head/; revision=367013
* Significantly speed up mkimg_testAlex Richardson2020-10-181-0/+2
| | | | | | | | | | | | | | | | | It turns out that the majority of the test time for the mkimg tests isn't mkimg itself but rather the use of jot and hexdump which can be quite slow on emulated platforms such as QEMU. On QEMU-RISC-V this reduces the time for `kyua test mkimg_test` from 655 seconds to 200. And for CheriBSD on QEMU-CHERI this saves 4-5 hours (25% of the time for the entire testsuite!) since jot ends up triggering slow functions inside the QEMU emulation a lot. Reviewed By: lwhsu Differential Revision: https://reviews.freebsd.org/D26796 Notes: svn path=/head/; revision=366815
* Fix build with -DBOOTSTRAP_ALL_TOOLSAlex Richardson2020-10-121-1/+4
| | | | | | | | sbin/sysctl can no longer be bootstrapped on FreeBSD 12 after r366465, so create a symlink to the host tool instead of trying to build it. Notes: svn path=/head/; revision=366635
* Makefile.inc1: sysent: allow subordinate sysent targets to run in parallelKyle Evans2020-09-301-0/+4
| | | | | | | | | | | | | | | makesyscalls.lua (and indeed makesyscalls.sh) are both safe to be run in parallel, so let's do it. This is a trivial difference because runtime per-target is pretty small, but I like seeing it run in parallel when my muscle memory types `make -sj4`. Reviewed by: brooks, emaste MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D26594 Notes: svn path=/head/; revision=366275
* [PowerPC64LE] Set up powerpc.powerpc64le architectureBrandon Bergren2020-09-221-0/+1
| | | | | | | | | | | | | | | | | | This is the initial set up for PowerPC64LE. The current plan is for this arch to remain experimental for FreeBSD 13. This started as a weekend learning project for me and kinda snowballed from there. (More to follow momentarily.) Reviewed by: imp (earlier version), emaste Sponsored by: Tag1 Consulting, Inc. Differential Revision: https://reviews.freebsd.org/D26399 Notes: svn path=/head/; revision=366032
* Prefer bootstrapped tools when running certctl.shAlex Richardson2020-09-211-1/+1
| | | | | | | | | | | | | | | | Otherwise we get lots of warnings when building on Linux/macOS during installworld: Scanning /local/scratch/alr48/cheri/output/freebsd-x86/usr/share/certs/blacklisted for certificates... install: invalid option -- 'U' Try 'install --help' for more information. install: invalid option -- 'U' .... Reviewed By: kevans Differential Revision: https://reviews.freebsd.org/D26481 Notes: svn path=/head/; revision=365939
* loader: zfs should support bootonce an nextbootToomas Soome2020-09-211-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | bootonce feature is temporary, one time boot, activated by "bectl activate -t BE", "bectl activate -T BE" will reset the bootonce flag. By default, the bootonce setting is reset on attempt to boot and the next boot will use previously active BE. By setting zfs_bootonce_activate="YES" in rc.conf, the bootonce BE will be set permanently active. bootonce dataset name is recorded in boot pool labels, bootenv area. in case of nextboot, the nextboot_enable boolean variable is recorded in freebsd:nvstore nvlist, also stored in boot pool label bootenv area. On boot, the loader will process /boot/nextboot.conf if nextboot_enable is "YES", and will set nextboot_enable to "NO", preventing /boot/nextboot.conf processing on next boot. bootonce and nextboot features are usable in both UEFI and BIOS boot. To use bootonce/nextboot features, the boot loader needs to be updated on disk; if loader.efi is stored on ESP, then ESP needs to be updated and for BIOS boot, stage2 (zfsboot or gptzfsboot) needs to be updated (gpart or other tools). At this time, only lua loader is updated. Sponsored by: Netflix, Klara Inc. Differential Revision: https://reviews.freebsd.org/D25512 Notes: svn path=/head/; revision=365938
* build: provide a default WARNS for all in-tree buildsKyle Evans2020-09-181-6/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | The current default is provided in various Makefile.inc in some top-level directories and covers a good portion of the tree, but doesn't cover parts of the build a little deeper (e.g. libcasper). Provide a default in src.sys.mk and set WARNS to it in bsd.sys.mk if that variable is defined. This lets us relatively cleanly provide a default WARNS no matter where you're building in the src tree without breaking things outside of the tree. Crunchgen has been updated as a bootstrap tool to work on this change because it needs r365605 at a minimum to succeed. The cleanup necessary to successfully walk over this change on WITHOUT_CLEAN builds has been added. There is a supplemental project to this to list all of the warnings that are encountered when the environment has WARNS=6 NO_WERROR=yes: https://warns.kevans.dev -- this project will hopefully eventually go away in favor of CI doing a much better job than it. Reviewed by: emaste, brooks, ngie (all earlier version) Reviewed by: emaste, arichardson (depend-cleanup.sh change) Differential Revision: https://reviews.freebsd.org/D26455 Notes: svn path=/head/; revision=365887
* Promote the installworld `certctl rehash` to distributeworldKyle Evans2020-09-171-4/+11
| | | | | | | | | | | | | | | | Contrary to my belief, installworld is not sufficient for getting certs installed into VM images. Promote the rehash to both installworld and distributeworld (notably: not stageworld) and rehash the base distdir so we end up with /etc/ssl/certs populated in the base dist archive. A future commit will remove the rehash from bsdinstall, which doesn't really need to happen if they're installed into base.txz. While here, fix a minor typo: s/CERTCLTFLAGS/CERTCTLFLAGS/ MFC after: 1 week Notes: svn path=/head/; revision=365837
* installworld: run `certctl rehash` after installation completesKyle Evans2020-09-171-1/+9
| | | | | | | | | | | | | | | | | | | | | | | This was originally introduced back in r360833, and subsequently reverted because it was broken for -DNO_ROOT builds and it may not have been the correct place for it. While debatably this may still not be 'the correct place,' it's much cleaner than scattering rehashes all throughout the tree. brooks has fixed the issue with -DNO_ROOT by properly writing to the METALOG in r361397. Do note that this is different than what was originally committed; brooks had revisions in D24932 that made it actually use the revised unprivileged mode and write to METALOG, along with being a little more friendly to foreign crossbuilds and just using the certctl in-tree. With this change, I believe we should now have a populated /etc/ssl/certs in the VM images. MFC after: 1 week Notes: svn path=/head/; revision=365829
* Makefile.inc1: remove more old stale depend hacksEd Maste2020-09-131-28/+0
| | | | | | | | Current stale dependency hacks are in tools/build/depend-cleanup.sh. These ones were almost a year old; remove them from Makefile.inc1. Notes: svn path=/head/; revision=365701