summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRenato Botelho <renato@netgate.com>2016-08-01 16:49:15 -0300
committerRenato Botelho <renato@netgate.com>2016-08-01 16:49:15 -0300
commit468f236dab9eafa8c39403ce66c50b153fbb1d42 (patch)
tree7a3d5339db501d019fa970aea66c089276e238f9
parent29cdd776aeb9531a745c773d7ebee84daaa891e5 (diff)
downloadpfsense-468f236dab9eafa8c39403ce66c50b153fbb1d42.zip
pfsense-468f236dab9eafa8c39403ce66c50b153fbb1d42.tar.gz
Add install_freebsd.sh and use it
-rwxr-xr-xbuild/scripts/install_freebsd.sh161
-rw-r--r--tools/builder_common.sh47
2 files changed, 179 insertions, 29 deletions
diff --git a/build/scripts/install_freebsd.sh b/build/scripts/install_freebsd.sh
new file mode 100755
index 0000000..19b04eb
--- /dev/null
+++ b/build/scripts/install_freebsd.sh
@@ -0,0 +1,161 @@
+#!/bin/sh
+#
+# install_freebsd.sh
+#
+# part of pfSense (https://www.pfsense.org)
+# Copyright (c) 2004-2016 Electric Sheep Fencing, LLC
+# All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+export PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin
+
+scripts_path=$(dirname $(realpath $0))
+
+if [ ! -f "${scripts_path}/common.subr" ]; then
+ echo >&2 "ERROR: common.subr is missing"
+ exit 1
+fi
+
+. ${scripts_path}/common.subr
+
+usage() {
+ cat >&2 <<END
+Usage: $(basename $0) -s srcdir -d destdir [-o objdir] [-iWKDhz]
+
+Options:
+ -s srcdir -- Path to src directory
+ -d destdir -- Destination directory to install
+ -o objdir -- Obj directory used to build
+ -i -- Include BSDInstall
+ -W -- Skip installworld
+ -K -- Skip installkernel
+ -D -- Skip distribution
+ -h -- Show this help and exit
+ -z -- gzip kernel
+
+Environment:
+ __MAKE_CONF -- Path to make.conf
+ SRCCONF -- Path to src.conf
+ SRC_ENV_CONF -- Path to src-env.conf
+ KERNCONF -- Kernel names
+ MODULES_OVERRIDE -- List of kernel modules to install
+ TARGET -- Machine hardware name
+ TARGET_ARCH -- Machine processor arquitecture name
+END
+ exit 1
+}
+
+unset with_bsdinstall
+unset skip_world
+unset skip_kernel
+unset skip_distribution
+unset gzip_kernel
+while getopts s:d:o:iWKDhz opt; do
+ case "$opt" in
+ s)
+ srcdir=$OPTARG
+ ;;
+ d)
+ destdir=$OPTARG
+ ;;
+ o)
+ objdir=$OPTARG
+ ;;
+ i)
+ with_bsdinstall=1
+ ;;
+ W)
+ skip_world=1
+ ;;
+ K)
+ skip_kernel=1
+ ;;
+ D)
+ skip_distribution=1
+ ;;
+ z)
+ gzip_kernel=1
+ ;;
+ *)
+ usage
+ ;;
+ esac
+done
+
+# Default obj dir to src/../obj
+: ${objdir=$(realpath ${srcdir}../obj)}
+
+[ -z "$srcdir" ] \
+ && err "source directory is not defined"
+
+[ -e $srcdir -a ! -d $srcdir ] \
+ && err "source path already exists and is not a directory"
+
+[ -z "$destdir" ] \
+ && err "destination directory is not defined"
+
+[ -e $destdir -a ! -d $destdir ] \
+ && err "destination path already exists and is not a directory"
+
+[ -n "$objdir" -a -e $objdir -a ! -d $objdir ] \
+ && err "obj path already exists and is not a directory"
+
+for env_var in __MAKE_CONF SRCCONF SRC_ENV_CONF; do
+ eval "value=\${$env_var}"
+ [ -n "${value}" -a ! -f "${value}" ] \
+ && err "${env_var} is pointing to a nonexistent file ${value}"
+done
+
+[ ! -f ${srcdir}/sys/sys/param.h ] \
+ && err "Source directory is missing sys/sys/param.h"
+
+ncpu=$(sysctl -n hw.ncpu)
+njobs=$((ncpu*2))
+j="-j${njobs}"
+
+[ -n "${objdir}" ] \
+ && export MAKEOBJDIRPREFIX=${objdir}
+
+[ -z "${with_bsdinstall}" ] \
+ && export WITHOUT_BSDINSTALL=yes
+
+[ -d $destdir ] \
+ && force_rm ${destdir}
+
+export DESTDIR=${destdir}
+
+make_cmd="make -C ${srcdir} -s ${j}"
+
+[ -z "${skip_world}" ] \
+ && run "Installing world" \
+ "${make_cmd} installworld"
+
+if [ -z "${skip_kernel}" ]; then
+ run "Installing kernel" \
+ "${make_cmd} KERNCONF=${KERNCONF:-pfSense} installkernel"
+
+ [ -n "${gzip_kernel}" ] \
+ && run "Compressing kernel" \
+ "gzip -f9 ${destdir}/boot/kernel/kernel"
+fi
+
+[ -z "${skip_distribution}" ] \
+ && run "Installing distribution" \
+ "${make_cmd} distribution"
+
+[ -n "${with_bsdinstall}" ] \
+ && run "Copying /etc/rc.local to start bsdinstall" \
+ "cp ${srcdir}/release/rc.local ${destdir}/etc"
+
+exit 0
diff --git a/tools/builder_common.sh b/tools/builder_common.sh
index d4ef70e..61b379a 100644
--- a/tools/builder_common.sh
+++ b/tools/builder_common.sh
@@ -326,37 +326,25 @@ make_world() {
[ -d "${INSTALLER_CHROOT_DIR}" ] \
|| mkdir -p ${INSTALLER_CHROOT_DIR}
- makeargs="${MAKEJ} DESTDIR=${INSTALLER_CHROOT_DIR}"
- echo ">>> Installing world for ${TARGET} architecture... (Starting - $(LC_ALL=C date))" | tee -a ${LOGFILE}
- echo ">>> Builder is running the command: script -aq $LOGFILE make -C ${FREEBSD_SRC_DIR} ${makeargs} installworld" | tee -a ${LOGFILE}
- (script -aq $LOGFILE make -C ${FREEBSD_SRC_DIR} ${makeargs} installworld || print_error_pfS;) | egrep '^>>>' | tee -a ${LOGFILE}
- cp ${FREEBSD_SRC_DIR}/release/rc.local ${INSTALLER_CHROOT_DIR}/etc
- echo ">>> Installing world for ${TARGET} architecture... (Finished - $(LC_ALL=C date))" | tee -a ${LOGFILE}
-
- echo ">>> Distribution world for ${TARGET} architecture... (Starting - $(LC_ALL=C date))" | tee -a ${LOGFILE}
- echo ">>> Builder is running the command: script -aq $LOGFILE make -C ${FREEBSD_SRC_DIR} ${makeargs} distribution " | tee -a ${LOGFILE}
- (script -aq $LOGFILE make -C ${FREEBSD_SRC_DIR} ${makeargs} distribution || print_error_pfS;) | egrep '^>>>' | tee -a ${LOGFILE}
- echo ">>> Distribution world for ${TARGET} architecture... (Finished - $(LC_ALL=C date))" | tee -a ${LOGFILE}
-
- makeargs="${MAKEJ} WITHOUT_BSDINSTALL=1 DESTDIR=${STAGE_CHROOT_DIR}"
- echo ">>> Installing world for ${TARGET} architecture... (Starting - $(LC_ALL=C date))" | tee -a ${LOGFILE}
- echo ">>> Builder is running the command: script -aq $LOGFILE make -C ${FREEBSD_SRC_DIR} ${makeargs} installworld" | tee -a ${LOGFILE}
- (script -aq $LOGFILE make -C ${FREEBSD_SRC_DIR} ${makeargs} installworld || print_error_pfS;) | egrep '^>>>' | tee -a ${LOGFILE}
- echo ">>> Installing world for ${TARGET} architecture... (Finished - $(LC_ALL=C date))" | tee -a ${LOGFILE}
-
- echo ">>> Distribution world for ${TARGET} architecture... (Starting - $(LC_ALL=C date))" | tee -a ${LOGFILE}
- echo ">>> Builder is running the command: script -aq $LOGFILE make -C ${FREEBSD_SRC_DIR} ${makeargs} distribution " | tee -a ${LOGFILE}
- (script -aq $LOGFILE make -C ${FREEBSD_SRC_DIR} ${makeargs} distribution || print_error_pfS;) | egrep '^>>>' | tee -a ${LOGFILE}
- echo ">>> Distribution world for ${TARGET} architecture... (Finished - $(LC_ALL=C date))" | tee -a ${LOGFILE}
+ echo ">>> Installing world with bsdinstall for ${TARGET} architecture..." | tee -a ${LOGFILE}
+ script -aq $LOGFILE ${SCRIPTS_DIR}/install_freebsd.sh -i -K \
+ -s ${FREEBSD_SRC_DIR} \
+ -d ${INSTALLER_CHROOT_DIR} \
+ || print_error_pfS
+
+ echo ">>> Installing world without bsdinstall for ${TARGET} architecture..." | tee -a ${LOGFILE}
+ script -aq $LOGFILE ${SCRIPTS_DIR}/install_freebsd.sh -K \
+ -s ${FREEBSD_SRC_DIR} \
+ -d ${STAGE_CHROOT_DIR} \
+ || print_error_pfS
+ # XXX It must go to the scripts
[ -d "${STAGE_CHROOT_DIR}/usr/local/bin" ] \
|| mkdir -p ${STAGE_CHROOT_DIR}/usr/local/bin
- makeargs="${MAKEJ} DESTDIR=${STAGE_CHROOT_DIR}"
+ makeargs="DESTDIR=${STAGE_CHROOT_DIR}"
echo ">>> Building and installing crypto tools and athstats for ${TARGET} architecture... (Starting - $(LC_ALL=C date))" | tee -a ${LOGFILE}
- echo ">>> Builder is running the command: script -aq $LOGFILE make -C ${FREEBSD_SRC_DIR}/tools/tools/crypto ${makeargs} clean all install " | tee -a ${LOGFILE}
(script -aq $LOGFILE make -C ${FREEBSD_SRC_DIR}/tools/tools/crypto ${makeargs} clean all install || print_error_pfS;) | egrep '^>>>' | tee -a ${LOGFILE}
# XXX FIX IT
-# echo ">>> Builder is running the command: script -aq $LOGFILE make -C ${FREEBSD_SRC_DIR}/tools/tools/ath/athstats ${makeargs} clean all install" | tee -a ${LOGFILE}
# (script -aq $LOGFILE make -C ${FREEBSD_SRC_DIR}/tools/tools/ath/athstats ${makeargs} clean all install || print_error_pfS;) | egrep '^>>>' | tee -a ${LOGFILE}
echo ">>> Building and installing crypto tools and athstats for ${TARGET} architecture... (Finished - $(LC_ALL=C date))" | tee -a ${LOGFILE}
@@ -1616,10 +1604,11 @@ installkernel() {
fi
mkdir -p ${STAGE_CHROOT_DIR}/boot
- makeargs="${MAKEJ} DESTDIR=${_destdir}"
- echo ">>> Builder is running the command: script -aq $LOGFILE make ${makeargs} installkernel KERNCONF=${KERNCONF}" | tee -a $LOGFILE
- (script -aq $LOGFILE make -C ${FREEBSD_SRC_DIR} ${makeargs} installkernel KERNCONF=${KERNCONF} || print_error_pfS;) | egrep '^>>>'
- gzip -f9 ${_destdir}/boot/kernel/kernel
+ echo ">>> Installing kernel (${KERNCONF}) for ${TARGET} architecture..." | tee -a ${LOGFILE}
+ script -aq $LOGFILE ${SCRIPTS_DIR}/install_freebsd.sh -W -D -z \
+ -s ${FREEBSD_SRC_DIR} \
+ -d ${_destdir} \
+ || print_error_pfS
}
# Launch is ran first to setup a few variables that we need
OpenPOWER on IntegriCloud