summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRenato Botelho <renato@netgate.com>2016-08-01 16:31:33 -0300
committerRenato Botelho <renato@netgate.com>2016-08-01 16:31:33 -0300
commit29cdd776aeb9531a745c773d7ebee84daaa891e5 (patch)
treee924372e3a3a045752156af0a45afc197967c631
parentf2dd0a5588a48e63439e1b4c7f31d66e90797770 (diff)
downloadpfsense-29cdd776aeb9531a745c773d7ebee84daaa891e5.zip
pfsense-29cdd776aeb9531a745c773d7ebee84daaa891e5.tar.gz
Add build_freebsd.sh and start using it
-rwxr-xr-xbuild/scripts/build_freebsd.sh127
-rw-r--r--tools/builder_common.sh19
2 files changed, 135 insertions, 11 deletions
diff --git a/build/scripts/build_freebsd.sh b/build/scripts/build_freebsd.sh
new file mode 100755
index 0000000..61ed2a8
--- /dev/null
+++ b/build/scripts/build_freebsd.sh
@@ -0,0 +1,127 @@
+#!/bin/sh
+#
+# build_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 [-o objdir] [-h]
+
+Options:
+ -s srcdir -- Path to src directory
+ -o objdir -- Obj directory used to build
+ -W -- Skip buildworld
+ -K -- Skip buildkernel
+ -h -- Show this help and exit
+
+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 build
+ TARGET -- Machine hardware name
+ TARGET_ARCH -- Machine processor arquitecture name
+END
+ exit 1
+}
+
+unset skip_world
+unset skip_kernel
+while getopts s:o:h opt; do
+ case "$opt" in
+ s)
+ srcdir=$OPTARG
+ ;;
+ o)
+ objdir=$OPTARG
+ ;;
+ W)
+ skip_world=1
+ ;;
+ K)
+ skip_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"
+
+[ -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"
+
+host_osversion=$(sysctl -n kern.osreldate)
+src_osversion=$(awk '/^\#define[[:blank:]]__FreeBSD_version/ {print $3}' \
+ ${srcdir}/sys/sys/param.h)
+
+[ -z "${src_osversion}" -o -z "${host_osversion}" ] \
+ && err "error obtaining host or src osversion"
+
+[ $src_osversion -gt $host_osversion ] \
+ && err "src osversion (${src_osversion}) is bigger than host " \
+ " osversion (${host_osversion})"
+
+ncpu=$(sysctl -n hw.ncpu)
+njobs=$((ncpu*2))
+j="-j${njobs}"
+
+[ -n "${objdir}" ] \
+ && export MAKEOBJDIRPREFIX=${objdir}
+
+[ -z "${skip_world}" ] \
+ && run "Building world" \
+ "make -C ${srcdir} -s ${j} buildworld"
+
+if [ -z "${skip_kernel}" ]; then
+ for kernel in ${KERNCONF:-pfSense}; do
+ run "Building kernel (${kernel})" \
+ "make -C ${srcdir} -s ${j} KERNCONF=${kernel} buildkernel"
+ done
+fi
+
+exit 0
diff --git a/tools/builder_common.sh b/tools/builder_common.sh
index bd3e7a2..d4ef70e 100644
--- a/tools/builder_common.sh
+++ b/tools/builder_common.sh
@@ -315,11 +315,10 @@ make_world() {
return
fi
- makeargs="${MAKEJ}"
- echo ">>> Building 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} buildworld" | tee -a ${LOGFILE}
- (script -aq $LOGFILE make -C ${FREEBSD_SRC_DIR} ${makeargs} buildworld || print_error_pfS;) | egrep '^>>>' | tee -a ${LOGFILE}
- echo ">>> Building world for ${TARGET} architecture... (Finished - $(LC_ALL=C date))" | tee -a ${LOGFILE}
+ echo ">>> $(LC_ALL=C date) - Starting build world for ${TARGET} architecture..." | tee -a ${LOGFILE}
+ script -aq $LOGFILE ${SCRIPTS_DIR}/build_freebsd.sh -K -s ${FREEBSD_SRC_DIR} \
+ || print_error_pfS
+ echo ">>> $(LC_ALL=C date) - Finished build world for ${TARGET} architecture..." | tee -a ${LOGFILE}
LOGFILE=${BUILDER_LOGS}/installworld.${TARGET}
echo ">>> LOGFILE set to $LOGFILE." | tee -a ${LOGFILE}
@@ -1596,12 +1595,10 @@ buildkernel() {
export KERNCONF=$(basename ${KERNELCONF})
fi
- echo ">>> KERNCONFDIR: ${KERNCONFDIR}"
- echo ">>> ARCH: ${TARGET_ARCH}"
-
- makeargs="${MAKEJ}"
- echo ">>> Builder is running the command: script -aq $LOGFILE make $makeargs buildkernel KERNCONF=${KERNCONF}" | tee -a $LOGFILE
- (script -q $LOGFILE make -C ${FREEBSD_SRC_DIR} $makeargs buildkernel KERNCONF=${KERNCONF} || print_error_pfS;) | egrep '^>>>'
+ echo ">>> $(LC_ALL=C date) - Starting build kernel for ${TARGET} architecture..." | tee -a ${LOGFILE}
+ script -aq $LOGFILE ${SCRIPTS_DIR}/build_freebsd.sh -W -s ${FREEBSD_SRC_DIR} \
+ || print_error_pfS
+ echo ">>> $(LC_ALL=C date) - Finished build kernel for ${TARGET} architecture..." | tee -a ${LOGFILE}
}
# Imported from FreeSBIE
OpenPOWER on IntegriCloud