Project

General

Profile

Download (18.9 KB) Statistics
| Branch: | Tag: | Revision:
1
#!/bin/sh
2
#
3
# builder_defaults.sh
4
#
5
# part of pfSense (https://www.pfsense.org)
6
# Copyright (c) 2004-2016 Rubicon Communications, LLC (Netgate)
7
# All rights reserved.
8
#
9
# Redistribution and use in source and binary forms, with or without
10
# modification, are permitted provided that the following conditions are met:
11
#
12
# 1. Redistributions of source code must retain the above copyright notice,
13
#    this list of conditions and the following disclaimer.
14
#
15
# 2. Redistributions in binary form must reproduce the above copyright
16
#    notice, this list of conditions and the following disclaimer in
17
#    the documentation and/or other materials provided with the
18
#    distribution.
19
#
20
# 3. All advertising materials mentioning features or use of this software
21
#    must display the following acknowledgment:
22
#    "This product includes software developed by the pfSense Project
23
#    for use in the pfSense® software distribution. (http://www.pfsense.org/).
24
#
25
# 4. The names "pfSense" and "pfSense Project" must not be used to
26
#    endorse or promote products derived from this software without
27
#    prior written permission. For written permission, please contact
28
#    coreteam@pfsense.org.
29
#
30
# 5. Products derived from this software may not be called "pfSense"
31
#    nor may "pfSense" appear in their names without prior written
32
#    permission of the Electric Sheep Fencing, LLC.
33
#
34
# 6. Redistributions of any form whatsoever must retain the following
35
#    acknowledgment:
36
#
37
# "This product includes software developed by the pfSense Project
38
# for use in the pfSense software distribution (http://www.pfsense.org/).
39
#
40
# THIS SOFTWARE IS PROVIDED BY THE pfSense PROJECT ``AS IS'' AND ANY
41
# EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
42
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
43
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE pfSense PROJECT OR
44
# ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
45
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
46
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
47
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
49
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
50
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
51
# OF THE POSSIBILITY OF SUCH DAMAGE.
52

    
53
###########################################
54
# Product builder configuration file      #
55
# Please don't modify this file, you      #
56
# can put your settings and options       #
57
# in build.conf, which is sourced at the  #
58
# beginning of this file                  #
59
###########################################
60

    
61
if [ -z "${BUILDER_ROOT}" ]; then
62
	echo ">>> ERROR: BUILDER_ROOT must be defined by script that includes builder_defaults.sh"
63
	exit 1
64
fi
65

    
66
if [ ! -d "${BUILDER_ROOT}" ]; then
67
	echo ">>> ERROR: BUILDER_ROOT is invalid"
68
	exit 1
69
fi
70

    
71
export BUILDER_TOOLS=${BUILDER_TOOLS:-"${BUILDER_ROOT}/tools"}
72

    
73
if [ ! -d "${BUILDER_TOOLS}" ]; then
74
	echo ">>> ERROR: BUILDER_TOOLS is invalid"
75
	exit 1
76
fi
77

    
78
BUILD_CONF="${BUILDER_ROOT}/build.conf"
79

    
80
# Ensure file exists
81
if [ -f ${BUILD_CONF} ]; then
82
	. ${BUILD_CONF}
83
fi
84

    
85
# Make sure pkg will not be interactive
86
export ASSUME_ALWAYS_YES=true
87

    
88
# Architecture, supported ARCH values are:
89
#  Tier 1: i386, AMD64, and PC98
90
#  Tier 2: ARM, PowerPC, ia64, Sparc64 and sun4v
91
#  Tier 3: MIPS and S/390
92
#  Tier 4: None at the moment
93
#  Source: http://www.freebsd.org/doc/en/articles/committers-guide/archs.html
94
export TARGET=${TARGET:-"`uname -m`"}
95
export TARGET_ARCH=${TARGET_ARCH:-${TARGET}}
96
# Set TARGET_ARCH_CONF_DIR
97
if [ "$TARGET_ARCH" = "" ]; then
98
        export TARGET_ARCH=`uname -p`
99
fi
100

    
101
# Directory to be used for writing temporary information
102
export SCRATCHDIR=${SCRATCHDIR:-"${BUILDER_ROOT}/tmp"}
103
if [ ! -d ${SCRATCHDIR} ]; then
104
	mkdir -p ${SCRATCHDIR}
105
fi
106

    
107
# Product details
108
export PRODUCT_NAME=${PRODUCT_NAME:-"nonSense"}
109
export PRODUCT_NAME_SUFFIX=${PRODUCT_NAME_SUFFIX:-"-CE"}
110
export REPO_BRANCH_PREFIX=${REPO_BRANCH_PREFIX:-""}
111
export PRODUCT_URL=${PRODUCT_URL:-""}
112
export PRODUCT_SRC=${PRODUCT_SRC:-"${BUILDER_ROOT}/src"}
113
export PRODUCT_EMAIL=${PRODUCT_EMAIL:-"coreteam@pfsense.org"}
114
export XML_ROOTOBJ=${XML_ROOTOBJ:-$(echo "${PRODUCT_NAME}" | tr '[[:upper:]]' '[[:lower:]]')}
115

    
116
if [ "${PRODUCT_NAME}" = "pfSense" -a "${BUILD_AUTHORIZED_BY_NETGATE}" != "yes" ]; then
117
	echo ">>>ERROR: According the following license, only Netgate can build genuine pfSense® software"
118
	echo ""
119
	cat ${BUILDER_ROOT}/license.txt
120
	exit 1
121
fi
122

    
123
if [ -z "${PRODUCT_VERSION}" ]; then
124
	if [ ! -f ${PRODUCT_SRC}/etc/version ]; then
125
		echo ">>> ERROR: PRODUCT_VERSION is not defined and ${PRODUCT_SRC}/etc/version was not found"
126
		print_error_pfS
127
	fi
128

    
129
	export PRODUCT_VERSION=$(head -n 1 ${PRODUCT_SRC}/etc/version)
130
fi
131
export PRODUCT_REVISION=${PRODUCT_REVISION:-""}
132

    
133
# Product repository tag to build
134
_cur_git_repo_branch_or_tag=$(git -C ${BUILDER_ROOT} rev-parse --abbrev-ref HEAD)
135
if [ "${_cur_git_repo_branch_or_tag}" = "HEAD" ]; then
136
	# We are on a tag, lets find out its name
137
	export GIT_REPO_BRANCH_OR_TAG=$(git -C ${BUILDER_ROOT} describe --tags)
138
else
139
	export GIT_REPO_BRANCH_OR_TAG="${_cur_git_repo_branch_or_tag}"
140
fi
141
# Use vX_Y instead of RELENG_X_Y for poudriere to make it shorter
142
# Replace . by _ to make tag names look correct
143
POUDRIERE_BRANCH=$(echo "${GIT_REPO_BRANCH_OR_TAG}" | sed 's,RELENG_,v,; s,\.,_,g')
144

    
145
GIT_REPO_BASE=$(git -C ${BUILDER_ROOT} config --get remote.origin.url | sed -e 's,/[^/]*$,,')
146

    
147
# This is used for using svn for retrieving src
148
export FREEBSD_REPO_BASE=${FREEBSD_REPO_BASE:-"${GIT_REPO_BASE}/freebsd-src.git"}
149
export FREEBSD_BRANCH=${FREEBSD_BRANCH:-"RELENG_2_3"}
150
export FREEBSD_PARENT_BRANCH=${FREEBSD_PARENT_BRANCH:-"releng/10.3"}
151
export FREEBSD_SRC_DIR=${FREEBSD_SRC_DIR:-"${SCRATCHDIR}/FreeBSD-src"}
152

    
153
if [ "${TARGET}" = "i386" ]; then
154
	export BUILD_KERNELS=${BUILD_KERNELS:-"${PRODUCT_NAME} ${PRODUCT_NAME}_wrap ${PRODUCT_NAME}_wrap_vga"}
155
else
156
	export BUILD_KERNELS=${BUILD_KERNELS:-"${PRODUCT_NAME}"}
157
fi
158

    
159
# Leave this alone.
160
export SRC_CONF=${SRC_CONF:-"${FREEBSD_SRC_DIR}/release/conf/${PRODUCT_NAME}_src.conf"}
161
export MAKE_CONF=${MAKE_CONF:-"${FREEBSD_SRC_DIR}/release/conf/${PRODUCT_NAME}_make.conf"}
162

    
163
# Extra tools to be added to ITOOLS
164
export EXTRA_TOOLS=${EXTRA_TOOLS:-"uuencode uudecode ex"}
165

    
166
# Path to kernel files being built
167
export KERNEL_BUILD_PATH=${KERNEL_BUILD_PATH:-"${SCRATCHDIR}/kernels"}
168

    
169
# Do not touch builder /usr/obj
170
export MAKEOBJDIRPREFIX=${MAKEOBJDIRPREFIX:-"${SCRATCHDIR}/obj"}
171

    
172
# Controls how many concurrent make processes are run for each stage
173
_CPUS=""
174
if [ -z "${NO_MAKEJ}" ]; then
175
	_CPUS=$(expr $(sysctl -n kern.smp.cpus) '*' 2)
176
	if [ -n "${_CPUS}" ]; then
177
		_CPUS="-j${_CPUS}"
178
	fi
179
fi
180

    
181
export MAKEJ_WORLD=${MAKEJ_WORLD:-"${_CPUS}"}
182
export MAKEJ_KERNEL=${MAKEJ_KERNEL:-"${_CPUS}"}
183

    
184
if [ "${TARGET}" = "i386" ]; then
185
	export MODULES_OVERRIDE=${MODULES_OVERRIDE:-"i2c ipmi ndis ipfw ipdivert dummynet fdescfs opensolaris zfs glxsb if_stf coretemp amdtemp hwpmc"}
186
else
187
	export MODULES_OVERRIDE=${MODULES_OVERRIDE:-"i2c ipmi ndis ipfw ipdivert dummynet fdescfs opensolaris zfs glxsb if_stf coretemp amdtemp aesni sfxge hwpmc vmm nmdm ixgbe"}
188
fi
189

    
190
# gnid
191
export GNID_REPO_BASE=${GNID_REPO_BASE:-"${GIT_REPO_BASE}/gnid.git"}
192
export GNID_SRC_DIR=${GNID_SRC_DIR:-"${SCRATCHDIR}/gnid"}
193
export GNID_BRANCH=${GNID_BRANCH:-"master"}
194
export GNID_INCLUDE_DIR=${GNID_INCLUDE_DIR:-"${MAKEOBJDIRPREFIX}/${FREEBSD_SRC_DIR}/tmp/usr/include"}
195
export GNID_LIBCRYPTO_DIR=${GNID_LIBCRYPTO_DIR:-"${MAKEOBJDIRPREFIX}/${FREEBSD_SRC_DIR}/secure/lib/libcrypto"}
196

    
197
# Area that the final image will appear in
198
export IMAGES_FINAL_DIR=${IMAGES_FINAL_DIR:-"${SCRATCHDIR}/${PRODUCT_NAME}/"}
199

    
200
export BUILDER_LOGS=${BUILDER_LOGS:-"${BUILDER_ROOT}/logs"}
201
if [ ! -d ${BUILDER_LOGS} ]; then
202
	mkdir -p ${BUILDER_LOGS}
203
fi
204

    
205
# This is where files will be staged
206
export STAGE_CHROOT_DIR=${STAGE_CHROOT_DIR:-"${SCRATCHDIR}/stage-dir"}
207

    
208
# Directory that will clone to in order to create
209
# iso staging area.
210
export FINAL_CHROOT_DIR=${FINAL_CHROOT_DIR:-"${SCRATCHDIR}/final-dir"}
211

    
212
# OVF/vmdk parms
213
# Name of ovf file included inside OVA archive
214
export OVFTEMPLATE=${OVFTEMPLATE:-"${BUILDER_TOOLS}/templates/ovf/${PRODUCT_NAME}.ovf"}
215
# / partition to be used by mkimg
216
export OVFUFS=${OVFUFS:-"${PRODUCT_NAME}${PRODUCT_NAME_SUFFIX}-disk1.ufs"}
217
# Raw disk to be converted to vmdk
218
export OVFRAW=${OVFRAW:-"${PRODUCT_NAME}${PRODUCT_NAME_SUFFIX}-disk1.raw"}
219
# On disk name of VMDK file included in OVA
220
export OVFVMDK=${OVFVMDK:-"${PRODUCT_NAME}${PRODUCT_NAME_SUFFIX}-disk1.vmdk"}
221
# 8 gigabyte on disk VMDK size
222
export VMDK_DISK_CAPACITY_IN_GB=${VMDK_DISK_CAPACITY_IN_GB:-"8"}
223
# swap partition size (freebsd-swap)
224
export OVA_SWAP_PART_SIZE_IN_GB=${OVA_SWAP_PART_SIZE_IN_GB:-"0"}
225
# Temporary place to save files
226
export OVA_TMP=${OVA_TMP:-"${SCRATCHDIR}/ova_tmp"}
227
# end of OVF
228

    
229
# Number of code images on media (1 or 2)
230
export NANO_IMAGES=2
231
# 0 -> Leave second image all zeroes so it compresses better.
232
# 1 -> Initialize second image with a copy of the first
233
export NANO_INIT_IMG2=1
234
export NANO_NEWFS="-b 4096 -f 512 -i 8192 -O1"
235
export FLASH_SIZE=${FLASH_SIZE:-"2g"}
236
# Size of code file system in 512 bytes sectors
237
# If zero, size will be as large as possible.
238
export NANO_CODESIZE=0
239
# Size of data file system in 512 bytes sectors
240
# If zero: no partition configured.
241
# If negative: max size possible
242
export NANO_DATASIZE=0
243
# Size of Product /conf partition  # 102400 = 50 megabytes.
244
export NANO_CONFSIZE=102400
245
# packet is OK for 90% of embedded
246
export NANO_BOOT0CFG="-o packet -s 1 -m 3"
247

    
248
# NOTE: Date string is used for creating file names of images
249
#       The file is used for sharing the same value with build_snapshots.sh
250
export DATESTRINGFILE=${DATESTRINGFILE:-"$SCRATCHDIR/version.snapshots"}
251
if [ -z "${DATESTRING}" ]; then
252
	if [ -f "${DATESTRINGFILE}" -a -n "${_USE_OLD_DATESTRING}" ]; then
253
		export DATESTRING=$(cat $DATESTRINGFILE)
254
	else
255
		export DATESTRING=$(date "+%Y%m%d-%H%M")
256
	fi
257
fi
258
echo "$DATESTRING" > $DATESTRINGFILE
259

    
260
# NOTE: Date string is placed on the final image etc folder to help detect new updates
261
#       The file is used for sharing the same value with build_snapshots.sh
262
export BUILTDATESTRINGFILE=${BUILTDATESTRINGFILE:-"$SCRATCHDIR/version.buildtime"}
263
if [ -z "${BUILTDATESTRING}" ]; then
264
	if [ -f "${BUILTDATESTRINGFILE}" -a -n "${_USE_OLD_DATESTRING}" ]; then
265
		export BUILTDATESTRING=$(cat $BUILTDATESTRINGFILE)
266
	else
267
		export BUILTDATESTRING=$(date "+%a %b %d %T %Z %Y")
268
	fi
269
fi
270
echo "$BUILTDATESTRING" > $BUILTDATESTRINGFILE
271

    
272
STAGING_HOSTNAME=${STAGING_HOSTNAME:-"release-staging.netgate.com"}
273

    
274
# Poudriere
275
export ZFS_TANK=${ZFS_TANK:-"zroot"}
276
export ZFS_ROOT=${ZFS_ROOT:-"/poudriere"}
277
export POUDRIERE_PORTS_NAME=${POUDRIERE_PORTS_NAME:-"${PRODUCT_NAME}_${POUDRIERE_BRANCH}"}
278

    
279
export POUDRIERE_BULK=${POUDRIERE_BULK:-"${BUILDER_TOOLS}/conf/pfPorts/poudriere_bulk"}
280
if [ -z "${REPO_BRANCH_PREFIX}" ]; then
281
	export POUDRIERE_PORTS_GIT_URL=${POUDRIERE_PORTS_GIT_URL:-"${GIT_REPO_BASE}/freebsd-ports.git"}
282
else
283
	export POUDRIERE_PORTS_GIT_URL=${POUDRIERE_PORTS_GIT_URL:-"${GIT_REPO_BASE}/${REPO_BRANCH_PREFIX}ports.git"}
284
fi
285
export POUDRIERE_PORTS_GIT_BRANCH=${POUDRIERE_PORTS_GIT_BRANCH:-"${REPO_BRANCH_PREFIX}RELENG_2_3_5"}
286

    
287
unset _IS_RELEASE
288
unset _IS_RC
289
unset CORE_PKG_DATESTRING
290
export TIMESTAMP_SUFFIX="-${DATESTRING}"
291
# pkg doesn't like - as version separator, use . instead
292
export PKG_DATESTRING=$(echo "${DATESTRING}" | sed 's,-,.,g')
293
case "${PRODUCT_VERSION##*-}" in
294
	RELEASE)
295
		export _IS_RELEASE=yes
296
		unset TIMESTAMP_SUFFIX
297
		;;
298
	ALPHA|DEVELOPMENT)
299
		export CORE_PKG_DATESTRING=".a.${PKG_DATESTRING}"
300
		;;
301
	BETA*)
302
		export CORE_PKG_DATESTRING=".b.${PKG_DATESTRING}"
303
		;;
304
	RC*)
305
		export _IS_RC=yes
306
		export CORE_PKG_DATESTRING=".r.${PKG_DATESTRING}"
307
		;;
308
	*)
309
		echo ">>> ERROR: Invalid PRODUCT_VERSION format ${PRODUCT_VERSION}"
310
		exit 1
311
esac
312

    
313
# Host to rsync pkg repos from poudriere
314
export PKG_RSYNC_HOSTNAME=${PKG_RSYNC_HOSTNAME:-${STAGING_HOSTNAME}}
315
export PKG_RSYNC_USERNAME=${PKG_RSYNC_USERNAME:-"wwwsync"}
316
export PKG_RSYNC_SSH_PORT=${PKG_RSYNC_SSH_PORT:-"22"}
317
export PKG_RSYNC_DESTDIR=${PKG_RSYNC_DESTDIR:-"/staging/ce/packages"}
318
export PKG_RSYNC_LOGS=${PKG_RSYNC_LOGS:-"/staging/ce/packages/logs/${POUDRIERE_BRANCH}/${TARGET}"}
319

    
320
# Final packages server
321
if [ -n "${_IS_RELEASE}" -o -n "${_IS_RC}" ]; then
322
	export PKG_FINAL_RSYNC_HOSTNAME=${PKG_FINAL_RSYNC_HOSTNAME:-"nfs1.nyi.netgate.com"}
323
	export PKG_FINAL_RSYNC_DESTDIR=${PKG_FINAL_RSYNC_DESTDIR:-"/storage/files/pkg"}
324
else
325
	export PKG_FINAL_RSYNC_HOSTNAME=${PKG_FINAL_RSYNC_HOSTNAME:-"nfs1.nyi.netgate.com"}
326
	export PKG_FINAL_RSYNC_DESTDIR=${PKG_FINAL_RSYNC_DESTDIR:-"/storage/files/beta/packages"}
327
fi
328
export PKG_FINAL_RSYNC_USERNAME=${PKG_FINAL_RSYNC_USERNAME:-"wwwsync"}
329
export PKG_FINAL_RSYNC_SSH_PORT=${PKG_FINAL_RSYNC_SSH_PORT:-"22"}
330
export SKIP_FINAL_RSYNC=${SKIP_FINAL_RSYNC:-}
331

    
332
# pkg repo variables
333
export USE_PKG_REPO_STAGING="1"
334
export PKG_REPO_SERVER_DEVEL=${PKG_REPO_SERVER_DEVEL:-"pkg+https://beta.pfsense.org/packages"}
335
export PKG_REPO_SERVER_RELEASE=${PKG_REPO_SERVER_RELEASE:-"pkg+https://pkg.pfsense.org"}
336
export PKG_REPO_SERVER_STAGING=${PKG_REPO_SERVER_STAGING:-"pkg+http://${STAGING_HOSTNAME}/ce/packages"}
337

    
338
if [ -n "${_IS_RELEASE}" -o -n "${_IS_RC}" ]; then
339
	export PKG_REPO_BRANCH_RELEASE=${PKG_REPO_BRANCH_RELEASE:-${POUDRIERE_BRANCH}}
340
	export PKG_REPO_BRANCH_DEVEL=${PKG_REPO_BRANCH_DEVEL:-"${REPO_BRANCH_PREFIX}v2_3"}
341
	export PKG_REPO_BRANCH_STAGING=${PKG_REPO_BRANCH_STAGING:-${PKG_REPO_BRANCH_RELEASE}}
342
else
343
	export PKG_REPO_BRANCH_RELEASE=${PKG_REPO_BRANCH_RELEASE:-"${REPO_BRANCH_PREFIX}v2_3_5"}
344
	export PKG_REPO_BRANCH_DEVEL=${PKG_REPO_BRANCH_DEVEL:-${POUDRIERE_BRANCH}}
345
	export PKG_REPO_BRANCH_STAGING=${PKG_REPO_BRANCH_STAGING:-${PKG_REPO_BRANCH_DEVEL}}
346
fi
347

    
348
if [ -n "${_IS_RELEASE}" -o -n "${_IS_RC}" ]; then
349
	export PKG_REPO_SIGN_KEY=${PKG_REPO_SIGN_KEY:-"release${PRODUCT_NAME_SUFFIX}"}
350
else
351
	export PKG_REPO_SIGN_KEY=${PKG_REPO_SIGN_KEY:-"beta${PRODUCT_NAME_SUFFIX}"}
352
fi
353
# Command used to sign pkg repo
354
export PKG_REPO_SIGNING_COMMAND=${PKG_REPO_SIGNING_COMMAND:-"ssh sign@codesigner.netgate.com sudo ./sign.sh ${PKG_REPO_SIGN_KEY}"}
355
export DO_NOT_SIGN_PKG_REPO=${DO_NOT_SIGN_PKG_REPO:-}
356

    
357
# Define base package version, based on date for snaps
358
export CORE_PKG_VERSION="${PRODUCT_VERSION%%-*}${CORE_PKG_DATESTRING}${PRODUCT_REVISION:+_}${PRODUCT_REVISION}"
359
export CORE_PKG_PATH=${CORE_PKG_PATH:-"${SCRATCHDIR}/${PRODUCT_NAME}_${POUDRIERE_BRANCH}_${TARGET_ARCH}-core"}
360
export CORE_PKG_REAL_PATH="${CORE_PKG_PATH}/.real_${DATESTRING}"
361
export CORE_PKG_ALL_PATH="${CORE_PKG_PATH}/All"
362
export CORE_PKG_TMP=${CORE_PKG_TMP:-"${SCRATCHDIR}/core_pkg_tmp"}
363

    
364
export PKG_REPO_BASE=${PKG_REPO_BASE:-"${BUILDER_TOOLS}/templates/pkg_repos"}
365
export PFSENSE_DEFAULT_REPO_amd64="${PRODUCT_NAME}-repo"
366
export PKG_REPO_DEFAULT_amd64=${PKG_REPO_DEFAULT_amd64:-"${PKG_REPO_BASE}/${PFSENSE_DEFAULT_REPO_amd64}.conf"}
367
export PFSENSE_DEFAULT_REPO_i386="${PRODUCT_NAME}-repo"
368
export PKG_REPO_DEFAULT_i386=${PKG_REPO_DEFAULT_i386:-"${PKG_REPO_BASE}_i386/${PFSENSE_DEFAULT_REPO_i386}.conf"}
369
export PKG_REPO_PATH=${PKG_REPO_PATH:-"/usr/local/etc/pkg/repos/${PRODUCT_NAME}.conf"}
370

    
371
export PRODUCT_SHARE_DIR=${PRODUCT_SHARE_DIR:-"/usr/local/share/${PRODUCT_NAME}"}
372

    
373
# Package overlay. This gives people a chance to build product
374
# installable image that already contains certain extra packages.
375
#
376
# Needs to contain comma separated package names. Of course
377
# package names must be valid. Using non existent
378
# package name would yield an error.
379
#
380
#export custom_package_list=""
381

    
382
# General builder output filenames
383
export UPDATESDIR=${UPDATESDIR:-"${IMAGES_FINAL_DIR}/updates"}
384
export ISOPATH=${ISOPATH:-"${IMAGES_FINAL_DIR}/${PRODUCT_NAME}${PRODUCT_NAME_SUFFIX}-${PRODUCT_VERSION}${PRODUCT_REVISION:+-p}${PRODUCT_REVISION}-${TARGET}${TIMESTAMP_SUFFIX}.iso"}
385
export MEMSTICKPATH=${MEMSTICKPATH:-"${IMAGES_FINAL_DIR}/${PRODUCT_NAME}${PRODUCT_NAME_SUFFIX}-memstick-${PRODUCT_VERSION}${PRODUCT_REVISION:+-p}${PRODUCT_REVISION}-${TARGET}${TIMESTAMP_SUFFIX}.img"}
386
export MEMSTICKSERIALPATH=${MEMSTICKSERIALPATH:-"${IMAGES_FINAL_DIR}/${PRODUCT_NAME}${PRODUCT_NAME_SUFFIX}-memstick-serial-${PRODUCT_VERSION}${PRODUCT_REVISION:+-p}${PRODUCT_REVISION}-${TARGET}${TIMESTAMP_SUFFIX}.img"}
387
export MEMSTICKADIPATH=${MEMSTICKADIPATH:-"${IMAGES_FINAL_DIR}/${PRODUCT_NAME}${PRODUCT_NAME_SUFFIX}-memstick-ADI-${PRODUCT_VERSION}${PRODUCT_REVISION:+-p}${PRODUCT_REVISION}-${TARGET}${TIMESTAMP_SUFFIX}.img"}
388
export OVAPATH=${OVAPATH:-"${IMAGES_FINAL_DIR}/${PRODUCT_NAME}${PRODUCT_NAME_SUFFIX}-${PRODUCT_VERSION}${PRODUCT_REVISION:+-p}${PRODUCT_REVISION}-${TARGET}${TIMESTAMP_SUFFIX}.ova"}
389
export MEMSTICK_VARIANTS=${MEMSTICK_VARIANTS:-}
390
export VARIANTIMAGES=""
391
export VARIANTUPDATES=""
392

    
393
# set full-update update filename
394
export UPDATES_TARBALL_FILENAME=${UPDATES_TARBALL_FILENAME:-"${UPDATESDIR}/${PRODUCT_NAME}${PRODUCT_NAME_SUFFIX}-Full-Update-${PRODUCT_VERSION}${PRODUCT_REVISION:+-p}${PRODUCT_REVISION}-${TARGET}${TIMESTAMP_SUFFIX}.tgz"}
395

    
396
# nanobsd templates
397
export NANOBSD_IMG_TEMPLATE=${NANOBSD_IMG_TEMPLATE:-"${PRODUCT_NAME}${PRODUCT_NAME_SUFFIX}-${PRODUCT_VERSION}${PRODUCT_REVISION:+-p}${PRODUCT_REVISION}-%%SIZE%%-${TARGET}-%%TYPE%%${TIMESTAMP_SUFFIX}.img"}
398
export NANOBSD_UPGRADE_TEMPLATE=${NANOBSD_UPGRADE_TEMPLATE:-"${PRODUCT_NAME}${PRODUCT_NAME_SUFFIX}-${PRODUCT_VERSION}${PRODUCT_REVISION:+-p}${PRODUCT_REVISION}-%%SIZE%%-${TARGET}-%%TYPE%%-upgrade${TIMESTAMP_SUFFIX}.img"}
399

    
400
# Rsync data to send snapshots
401
if [ -n "${_IS_RELEASE}" -o -n "${SKIP_FINAL_RSYNC}" ]; then
402
	export RSYNCIP=${RSYNCIP:-"release-staging.netgate.com"}
403
	export RSYNCUSER=${RSYNCUSER:-"wwwsync"}
404
	export RSYNCPATH=${RSYNCPATH:-"/staging/ce/images"}
405
else
406
	export RSYNCIP=${RSYNCIP:-"nfs1.nyi.netgate.com"}
407
	export RSYNCUSER=${RSYNCUSER:-"wwwsync"}
408
	export RSYNCPATH=${RSYNCPATH:-"/storage/files/snapshots/${TARGET}/${PRODUCT_NAME}_${GIT_REPO_BRANCH_OR_TAG}"}
409
fi
410

    
411
# staging area used on snapshots build
412
STAGINGAREA=${STAGINGAREA:-"${SCRATCHDIR}/staging"}
413
mkdir -p ${STAGINGAREA}
414

    
415
export SNAPSHOTSLOGFILE=${SNAPSHOTSLOGFILE:-"${SCRATCHDIR}/snapshots-build.log"}
416
export SNAPSHOTSLASTUPDATE=${SNAPSHOTSLASTUPDATE:-"${SCRATCHDIR}/snapshots-lastupdate.log"}
417

    
418
if [ -n "${POUDRIERE_SNAPSHOTS}" ]; then
419
	export SNAPSHOTS_RSYNCIP=${PKG_RSYNC_HOSTNAME}
420
	export SNAPSHOTS_RSYNCUSER=${PKG_RSYNC_USERNAME}
421
else
422
	export SNAPSHOTS_RSYNCIP=${RSYNCIP}
423
	export SNAPSHOTS_RSYNCUSER=${RSYNCUSER}
424
fi
425

    
426
if [ "${PRODUCT_NAME}" = "pfSense" ]; then
427
	export VENDOR_NAME=${VENDOR_NAME:-"Rubicon Communications, LLC (Netgate)"}
428
	export OVF_INFO=${OVF_INFO:-"pfSense is a free, open source customized distribution of FreeBSD tailored for use as a firewall and router. In addition to being a powerful, flexible firewalling and routing platform, it includes a long list of related features and a package system allowing further expandability without adding bloat and potential security vulnerabilities to the base distribution. pfSense is a popular project with more than 1 million downloads since its inception, and proven in countless installations ranging from small home networks protecting a PC and an Xbox to large corporations, universities and other organizations protecting thousands of network devices."}
429
else
430
	export VENDOR_NAME=${VENDOR_NAME:-"nonSense"}
431
	export OVF_INFO=${OVF_INFO:-"none"}
432
fi
(3-3/3)