Author: imp
Date: Fri Apr 18 17:03:09 2014
New Revision: 264656
URL: http://svnweb.freebsd.org/changeset/base/264656

Log:
  An abstracted down version of the NanoBSD config files as used by
  FreeNAS and the BSDRP folks.

Added:
  head/tools/tools/nanobsd/dhcpd/
  head/tools/tools/nanobsd/dhcpd/README   (contents, props changed)
  head/tools/tools/nanobsd/dhcpd/common   (contents, props changed)
  head/tools/tools/nanobsd/dhcpd/os-base   (contents, props changed)

Added: head/tools/tools/nanobsd/dhcpd/README
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/tools/tools/nanobsd/dhcpd/README       Fri Apr 18 17:03:09 2014        
(r264656)
@@ -0,0 +1,14 @@
+$FreeBSD$
+
+Example for creating many different builds (including different
+arch) from a common set of files, as well as building natively
+using qemu user space emulation.
+
+This creates a simple appliance that uses dnsmasq to serve DNS
+and DHCPd.
+
+This is a work in progress. Generally, to build this you should
+     cd tools/tools/nanobsd/dhcpd
+     sudo sh ../nandobsd.sh -C os-base
+but do be careful if things are interrupted. There may still be
+bugs lurking that cause your entire FreeBSD tree to disappear.

Added: head/tools/tools/nanobsd/dhcpd/common
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/tools/tools/nanobsd/dhcpd/common       Fri Apr 18 17:03:09 2014        
(r264656)
@@ -0,0 +1,275 @@
+# $FreeBSD$
+
+#-
+# Copyright (c) 2014 Warner Losh. All Rights Reserved.
+# Copyright (c) 2010 iXsystems, Inc., All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED.  IN NO EVENT SHALL iXsystems, Inc OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+#
+# This file is heavily derived from both Sam Leffler's Avilia config,
+# as well as the BSDRP project's config file.  Neither of these have
+# an explicit copyright/license statement, but are implicitly BSDL. This
+# example has been taken from the FreeNAS project (an early version) and
+# simplified to meet the needs of the example.
+#
+
+NANO_PMAKE="make"                                      # NB: disable -j 3
+
+NANO_CFG_BASE=$(pwd)
+NANO_CFG_BASE=${NANO_CFG_BASE%/dhcpd}
+NANO_SRC=$(pwd)
+NANO_SRC=${NANO_SRC%/tools/tools/nanobsd/dhcpd}
+NANO_OBJ=${NANO_SRC}/../dhcpd/obj
+# Where cust_pkg() finds packages to install
+#XXX: Is this the right place?
+NANO_PORTS=${NANO_SRC}/../ports
+NANO_PACKAGE_DIR=${NANO_SRC}/${NANO_TOOLS}/Pkg
+NANO_DATADIR=${NANO_OBJ}/_.data
+NANO_DATASIZE=40960
+NANO_INIT_IMG2=0
+unset MAKEOBJDIRPREFIX
+
+# this to go into nanobsd.sh
+NANO_PORTS=${NANO_PORTS:-/usr/ports}
+
+customize_cmd cust_allow_ssh_root
+
+add_etc_make_conf()
+{
+       touch ${NANO_WORLDDIR}/etc/make.conf
+}
+customize_cmd add_etc_make_conf
+
+clean_usr_local()
+{
+       LOCAL_DIR=${NANO_WORLDDIR}/usr/local
+       pprint 2 "Clean and create world directory (${LOCAL_DIR})"
+       if rm -rf ${LOCAL_DIR}/ > /dev/null 2>&1 ; then
+               true
+       else
+               chflags -R noschg ${LOCAL_DIR}/
+               rm -rf ${LOCAL_DIR}/
+       fi
+       for f in bin etc lib libdata libexec sbin share; do
+               mkdir -p ${LOCAL_DIR}/$f
+       done
+}
+customize_cmd clean_usr_local
+
+cust_install_machine_files()
+{
+       echo "cd ${NANO_CFG_BASE}/Files"
+       cd ${NANO_CFG_BASE}/Files
+       find . -print | grep -Ev '/(CVS|\.svn)' | cpio -dumpv ${NANO_WORLDDIR}
+}
+customize_cmd cust_install_files
+customize_cmd cust_install_machine_files 
+
+buildenv()
+{
+       cd ${NANO_SRC}
+       env __MAKE_CONF=${NANO_MAKE_CONF_BUILD} DESTDIR=${NANO_WORLDDIR} make 
buildenv
+}
+
+NANO_MAKEFS="makefs -B big \
+       -o bsize=4096,fsize=512,density=8192,optimization=space"
+export NANO_MAKEFS
+
+# NB: leave c++ enabled so devd can be built
+CONF_BUILD="
+WITHOUT_ACPI=true
+WITHOUT_ATM=true
+WITHOUT_AUDIT=true
+WITHOUT_BIND_DNSSEC=true
+WITHOUT_BIND_ETC=true
+WITHOUT_BIND_LIBS_LWRES=true
+WITHOUT_BLUETOOTH=true
+WITHOUT_CALENDAR=true
+WITHOUT_CVS=true
+WITHOUT_DICT=true
+WITHOUT_EXAMPLES=true
+WITHOUT_FORTRAN=true
+WITHOUT_GAMES=true
+WITHOUT_GCOV=true
+WITHOUT_GPIB=true
+WITHOUT_HTML=true
+WITHOUT_I4B=true
+WITHOUT_IPFILTER=true
+WITHOUT_IPX=true
+WITHOUT_LIBKSE=true
+WITHOUT_LOCALES=true
+WITHOUT_LPR=true
+WITHOUT_MAN=true
+WITHOUT_NETCAT=true
+WITHOUT_NIS=true
+WITHOUT_NLS=true
+WITHOUT_NS_CACHING=true
+WITHOUT_OBJC=true
+WITHOUT_PROFILE=true
+WITHOUT_RCMDS=true
+WITHOUT_SENDMAIL=true
+WITHOUT_SHAREDOCS=true
+WITHOUT_SYSCONS=true
+WITHOUT_LIB32=true
+"
+CONF_INSTALL="$CONF_BUILD
+INSTALL_NODEBUG=t
+NOPORTDOCS=t
+NO_INSTALL_MANPAGES=t
+"
+# The following would help...
+# WITHOUT_TOOLCHAIN=true               can't build ports
+# WITHOUT_INSTALLLIB=true              libgcc.a
+#
+# from the build
+# WITHOUT_INFO=true                    makeinfo
+# WITHOUT_RCS=true
+PKG_ONLY_MAKE_CONF="
+WITHOUT_TOOLCHAIN=true
+WITHOUT_INSTALLLIB=true
+WITHOUT_INFO=true
+WITHOUT_RCS=true
+"
+
+NANO_PACKAGE_ONLY=1
+
+CR()
+{
+       chroot ${NANO_WORLDDIR} /bin/sh -exc "$*"
+}
+
+# install a package from a pre-built binary
+do_add_pkg ()
+{
+       # Need to create ${NANO_OBJ}/ports in this add_pkg_${port} function
+       set -x
+       mkdir -p ${NANO_OBJ}/ports/distfiles
+       mkdir -p ${NANO_OBJ}/ports/packages
+       mkdir -p ${NANO_WORLDDIR}/usr/ports/packages
+       mkdir -p ${NANO_WORLDDIR}/usr/ports/distfiles
+       mount -t nullfs -o noatime ${NANO_OBJ}/ports/packages \
+           ${NANO_WORLDDIR}/usr/ports/packages
+       mount -t nullfs -o noatime ${NANO_OBJ}/ports/distfiles \
+           ${NANO_WORLDDIR}/usr/ports/distfiles
+       CR "cd /usr/ports/packages/All;pkg_add -F $1.tbz"
+       umount ${NANO_WORLDDIR}/usr/ports/distfiles
+       umount ${NANO_WORLDDIR}/usr/ports/packages
+       rmdir ${NANO_WORLDDIR}/usr/ports/packages
+       rmdir ${NANO_WORLDDIR}/usr/ports/distfiles
+       rmdir ${NANO_WORLDDIR}/usr/ports
+       set +x
+}
+
+# Build a port (with the side effect of creating a package)
+do_add_port ()
+{
+       local port_path
+       port_path=$1
+       shift
+       set -x
+       # Need to create ${NANO_OBJ}/ports in this add_port_${port} function
+       mkdir -p ${NANO_OBJ}/ports/distfiles
+       mkdir -p ${NANO_OBJ}/ports/packages
+       mkdir -p ${NANO_PORTS}/packages
+       mkdir -p ${NANO_PORTS}/distfiles
+       mkdir -p ${NANO_WORLDDIR}/usr/src
+       mkdir -p ${NANO_WORLDDIR}/usr/ports
+       mount -t nullfs -o noatime ${NANO_SRC} ${NANO_WORLDDIR}/usr/src
+       mount -t nullfs -o noatime ${NANO_PORTS} ${NANO_WORLDDIR}/usr/ports
+       mount -t nullfs -o noatime ${NANO_OBJ}/ports/packages \
+           ${NANO_WORLDDIR}/usr/ports/packages
+       mount -t nullfs -o noatime ${NANO_OBJ}/ports/distfiles \
+           ${NANO_WORLDDIR}/usr/ports/distfiles
+       mkdir -p ${NANO_WORLDDIR}/dev
+       mount -t devfs devfs ${NANO_WORLDDIR}/dev
+       mkdir -p ${NANO_WORLDDIR}/usr/workdir
+       cp /etc/resolv.conf ${NANO_WORLDDIR}/etc/resolv.conf
+# Improvement: Don't know why package-recursive don't works here
+       CR "env UNAME_p=${NANO_ARCH} TARGET=${NANO_ARCH} \
+           TARGET_ARCH=${NANO_ARCH} make \
+           __MAKE_CONF=${NANO_MAKE_CONF_BUILD} \
+           WRKDIRPREFIX=/usr/workdir -C /usr/ports/$port_path \
+           package BATCH=yes $* clean FORCE_PKG_REGISTER=t"
+       rm ${NANO_WORLDDIR}/etc/resolv.conf
+       rm -rf ${NANO_WORLDDIR}/usr/obj
+       rm -rf ${NANO_WORLDDIR}/usr/workdir
+       umount ${NANO_WORLDDIR}/dev
+       umount ${NANO_WORLDDIR}/usr/ports/packages
+       umount ${NANO_WORLDDIR}/usr/ports/distfiles
+       umount ${NANO_WORLDDIR}/usr/ports
+       umount ${NANO_WORLDDIR}/usr/src
+       set +x
+}
+
+# Need to check if this function works with cross-compiling architecture!!!!
+# Recursive complex fonction: Generate one function for each ports
+add_port () {
+    local port_path=$1
+    local port=`echo $1 | sed -e 's/\//_/'`
+    export PORTSDIR=${NANO_PORTS}
+    shift
+    # Check if package allready exist
+    # Need to:
+    # 1. check ARCH of this package!
+    # 2. Add a trap
+    cd ${NANO_PORTS}/${port_path}
+    PKG_NAME=`make ${PKGNAME_HACK} PORTSDIR=${NANO_PORTS} 
__MAKE_CONF=${NANO_MAKE_CONF_BUILD} package-name` 
+    if [ -f ${NANO_OBJ}/ports/packages/All/${PKG_NAME}.tbz ]; then
+       # Pkg file found: Generate add_pkg_NAME function
+       eval "
+           add_pkg_${port} () {
+               do_add_pkg ${PKG_NAME}
+           }
+            customize_cmd add_pkg_${port}
+            "
+    else
+       # No pkg file: Generate add_port_NAME function
+        eval "
+            add_port_${port} () {
+               do_add_port ${port_path} $*
+           }
+           customize_cmd add_port_${port}
+       "
+       NANO_PACKAGE_ONLY=0
+    fi
+}
+
+die()
+{
+       echo "$*"
+       exit 1
+}
+
+create_amd64_diskimage()
+{
+       create_i386_diskimage "$*"
+}
+
+rp=$(realpath ${NANO_OBJ}/)
+__a=`mount | grep ${rp} | awk '{print length($3), $3;}' | sort -rn | awk 
'{$1=""; print;}'`
+if [ -n "$__a" ]; then
+    echo "unmounting $__a"
+    umount $__a
+fi
+
+NANO_BOOTLOADER="boot/boot0"

Added: head/tools/tools/nanobsd/dhcpd/os-base
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/tools/tools/nanobsd/dhcpd/os-base      Fri Apr 18 17:03:09 2014        
(r264656)
@@ -0,0 +1,244 @@
+# $FreeBSD$
+
+#-
+# Copyright (c) 2014 Warner Losh. All Rights Reserved.
+# Copyright (c) 2010-2011 iXsystems, Inc., All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED.  IN NO EVENT SHALL iXsystems, Inc. OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# This file is heavily derived from both Sam Leffler's Avilia config,
+# as well as the BSDRP project's config file.  Neither of these have
+# an explicit copyright/license statement, but are implicitly BSDL. This
+# example has been taken from the FreeNAS project and simplified to meet
+# the needs of the example.
+#
+
+# Pull in common definitions.
+. common
+
+NANO_BOOT0CFG="-o packet -s 1 -m 3 -t 18"
+
+# /var -> ~10MB (look through rc.initdiskless for the formula of how this
+# number is calculated out). Since we hope to run 
+NANO_RAM_TMPVARSIZE=10240
+
+NANO_IMAGES=2
+FlashDevice generic 2g
+
+if [ "$DEBUG" = 1 ]; then
+       DEBUG_BUILD="
+DEBUG_FLAGS=           -g
+"
+else
+       DEBUG_INSTALL="
+INSTALL_NODEBUG=       t
+"
+fi
+
+CONF_INSTALL="$CONF_BUILD
+${DEBUG_BUILD}
+"
+CONF_INSTALL="$CONF_INSTALL
+${DEBUG_INSTALL}
+"
+
+add_port security/sudo
+add_port ftp/curl
+
+if [ "${NANO_PACKAGE_ONLY}" -eq 1 ]; then
+       CONF_INSTALL="${CONF_INSTALL}
+${PKG_ONLY_MAKE_CONF}
+"
+       echo "Automatically building a thin image with packages"
+else
+       echo "Automatically building a * * F A T * * image so we can build 
ports"
+fi
+
+VARS="MASTER_SITE_BACKUP MASTER_SITE_OVERRIDE PACKAGEROOT PACKAGESITE"
+
+for var in $VARS; do
+       val=$(eval echo "\$$var")
+       if [ -n "$val" ]; then
+               CONF_INSTALL="${CONF_INSTALL}
+$var=$val"
+       fi
+done
+
+if [ "$PACKAGE_PREP_BUILD" = 1 ]; then
+       echo "Skipping post-package customize steps"
+       do_image=false
+else
+
+hack_nsswitch_conf ( )
+{
+       # Remove all references to NIS in the nsswitch.conf file
+       # Not sure this is still needed, but FreeNAS has it...
+       sed -i.bak -es/nis/files/g ${NANO_WORLDDIR}/etc/nsswitch.conf
+       rm -f ${NANO_WORLDDIR}/etc/nsswitch.conf.bak
+}
+customize_cmd hack_nsswitch_conf
+
+save_build ( )
+{
+       VERSION_FILE=${NANO_WORLDDIR}/etc/version
+       if [ "${SVNREVISION}" = "${REVISION}" ]; then
+               echo "${NANO_NAME}" > "${VERSION_FILE}"
+       else
+               echo "${NANO_NAME} (${SVNREVISION})" > "${VERSION_FILE}"
+       fi
+}
+customize_cmd save_build
+
+# Move the $world/data to the /data partion
+move_data()
+{
+       db=${NANO_WORLDDIR}/data
+       rm -rf ${NANO_DATADIR}
+       mkdir -p ${NANO_DATADIR}
+       ( cd ${db} ; find . | cpio -R root:wheel -dumpv ${NANO_DATADIR} )
+       rm -rf ${db}
+}
+customize_cmd move_data
+
+add_data_to_fstab ( )
+{
+       (
+       cd ${NANO_WORLDDIR}
+       echo "/dev/${NANO_DRIVE}s4 /data ufs rw,noatime 2 2" >> etc/fstab
+       mkdir -p data
+       )
+       
+}
+customize_cmd add_data_to_fstab
+
+remove_patch_divots ( )
+{
+       find ${NANO_WORLDDIR} -name \*.orig -or -name \*.rej -delete
+}
+customize_cmd remove_patch_divots
+
+configure_mnt_md ( )
+{
+       mkdir -m 755 -p ${NANO_WORLDDIR}/conf/base/mnt
+       echo 2048 > ${NANO_WORLDDIR}/conf/base/mnt/md_size
+}
+customize_cmd configure_mnt_md
+
+shrink_md_fbsize()
+{
+       # We have a lot of little files on our memory disks. Let's decrease
+       # the block and frag size to fit more little files on them (this
+       # halves our space requirement by ~50% on /etc and /var on 8.x --
+       # and gives us more back on 9.x as the default block and frag size
+       # are 4 times larger).
+       sed -i '' -e 's,-S -i 4096,-S -i 4096 -b 4096 -f 512,' \
+               ${NANO_WORLDDIR}/etc/rc.initdiskless
+}
+customize_cmd shrink_md_fbsize
+
+if [ "${DEBUG}" = 1 ]; then
+
+unmute_console_logging()
+{
+       # /var is small. Don't fill it up with messages from console.log
+       # because it's a chatty log.
+       sed -i '' -e 's/#console.info/console.info/' \
+                       "${NANO_WORLDDIR}/etc/syslog.conf"
+}
+customize_cmd unmute_console_logging
+
+fi
+
+freenas_custom()
+{
+       gzip -v9 ${NANO_WORLDDIR}/boot/kernel/kernel
+
+       # kill includes (saves 14MB)
+       find ${NANO_WORLDDIR}/usr/local/include \! -name 'pyconfig.h' -type f | 
xargs rm -f
+
+       # kill docs (saves 22MB)
+       rm -rf ${NANO_WORLDDIR}/usr/local/share/doc
+       rm -rf ${NANO_WORLDDIR}/usr/local/share/gtk-doc
+
+       # and info (2MB)
+       rm -rf ${NANO_WORLDDIR}/usr/local/info
+
+       # and man pages (4.4MB)
+       rm -rf ${NANO_WORLDDIR}/usr/local/man
+
+       # and examples (1.7M)
+       rm -rf ${NANO_WORLDDIR}/usr/local/share/examples
+
+       # and groff_fonts junk (3MB)
+       rm -rf ${NANO_WORLDDIR}/usr/share/groff_font
+       rm -rf ${NANO_WORLDDIR}/usr/share/tmac
+       rm -rf ${NANO_WORLDDIR}/usr/share/me
+
+       # Kill all .a's and .la's that are installed (20MB+)
+       find ${NANO_WORLDDIR} -name \*.a -or -name \*.la -delete
+
+       # magic.mgc is just a speed optimization.  Kill it for 1.7MB
+       rm -f ${NANO_WORLDDIR}/usr/share/misc/magic.mgc
+
+       # strip binaries (saves spaces on non-debug images).
+       if [ "${DEBUG}" != 1 ]; then
+               pprint 4 "Stripping binaries and libraries"
+               for dir in $(find ${NANO_WORLDDIR}/usr/local -name '*bin' -or 
-name 'libexec' -maxdepth 3); do
+                       for f in $(find $dir -type f); do
+                               if ! dontstrip "$f"
+                               then
+                                       strip 2>/dev/null $f || :
+                               fi
+                       done
+               done
+               # .so's are the only thing that need to be stripped. The rest
+               # should remain untouched.
+               for f in $(find ${NANO_WORLDDIR}/usr/local/lib -name '*.so' -or 
-name '*.so.*' -maxdepth 3); do
+                               strip 2>/dev/null $f || :
+               done
+       fi
+
+       # Last second tweaks
+       chown -R root:wheel ${NANO_WORLDDIR}/root
+       chmod 0755 ${NANO_WORLDDIR}/root/*
+       chmod 0755 ${NANO_WORLDDIR}/*
+       chmod 0440 ${NANO_WORLDDIR}/usr/local/etc/sudoers
+       chown -R root:wheel ${NANO_WORLDDIR}/etc
+       chown -R root:wheel ${NANO_WORLDDIR}/boot
+       chown root:wheel ${NANO_WORLDDIR}/
+       chown root:wheel ${NANO_WORLDDIR}/usr
+       find ${NANO_WORLDDIR} -type f -name "*~" -delete
+       find ${NANO_WORLDDIR}/usr/local -type f -name "*.po" -delete
+       find ${NANO_WORLDDIR} -type f -name "*.service" -delete
+       mkdir ${NANO_WORLDDIR}/data/zfs
+       ln -s -f /usr/local/bin/bash ${NANO_WORLDDIR}/bin/bash
+       ln -s -f /data/zfs/zpool.cache ${NANO_WORLDDIR}/boot/zfs/zpool.cache
+
+       # This is wrong.  Needs a way to tell kernel how to find the mount 
utility
+       # instead.
+       mv ${NANO_WORLDDIR}/sbin/mount_ntfs 
${NANO_WORLDDIR}/sbin/mount_ntfs-kern
+       ln -s -f /usr/local/bin/ntfs-3g ${NANO_WORLDDIR}/sbin/mount_ntfs
+
+}
+late_customize_cmd freenas_custom
+
+fi # [ $PACKAGE_PREP_BUILD = 1 ]
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to