summaryrefslogtreecommitdiffstats
path: root/build
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 /build
parent29cdd776aeb9531a745c773d7ebee84daaa891e5 (diff)
downloadpfsense-468f236dab9eafa8c39403ce66c50b153fbb1d42.zip
pfsense-468f236dab9eafa8c39403ce66c50b153fbb1d42.tar.gz
Add install_freebsd.sh and use it
Diffstat (limited to 'build')
-rwxr-xr-xbuild/scripts/install_freebsd.sh161
1 files changed, 161 insertions, 0 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
OpenPOWER on IntegriCloud