configure.ac 51.8 KB
Newer Older
Leigh B. Stoller's avatar
Leigh B. Stoller committed
1
#
2
# Copyright (c) 2000-2019 University of Utah and the Flux Group.
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
# 
# {{{EMULAB-LICENSE
# 
# This file is part of the Emulab network testbed software.
# 
# This file is free software: you can redistribute it and/or modify it
# under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or (at
# your option) any later version.
# 
# This file is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public
# License for more details.
# 
# You should have received a copy of the GNU Affero General Public License
# along with this file.  If not, see <http://www.gnu.org/licenses/>.
# 
# }}}
Leigh B. Stoller's avatar
Leigh B. Stoller committed
22
#
23
AC_PREREQ([2.68])
24

25 26 27
AC_INIT
AC_CONFIG_SRCDIR([Makeconf.in])
AC_CONFIG_AUX_DIR(autoconf)
28
AC_PREFIX_DEFAULT(/usr/testbed)
29
AC_CONFIG_HEADER(config.h)
Leigh B Stoller's avatar
Leigh B Stoller committed
30
AC_CANONICAL_HOST
31

32 33 34 35 36 37
# We use separate source and obj trees in Emulab.  Configuring in a source
# tree messes it up, so throw an error.
#
# Check that $srcdir, (which defaults to the argv[0] path to the configure
# script,) is different from the current directory.
#
38
if test `(cd $srcdir; pwd)` = `pwd`; then
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
    if test "$ac_srcdir_defaulted" = yes; then
	AC_MSG_ERROR(
	    [You are running the configure script in the current directory.
Output from configure must go into an Emulab obj tree, not a source tree!
cd to the top of an obj tree, and run the configure in your source tree.])
    else
	AC_MSG_ERROR(
	    [You specified --srcdir= to be the current directory.
Output from configure should go into an Emulab obj tree, not a source tree!
cd to the top of an obj tree, and run the configure in your source tree.
Then --srcdir= will be unnecessary.])
    fi
fi
#
# Double-check that there isn't a Makeconf.in (the UNIQUE-FILE-IN-SOURCE-DIR)
# in the current directory.
#
if test -f $ac_unique_file; then
    AC_MSG_ERROR([The current directory is a source tree containing $ac_unique_file .
Output from configure should go into an Emulab obj tree, not a source tree!
cd to the top of an obj tree, and run the configure in your source tree.])
fi

62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
for tbarch in arm/3.4.1; do
    PATH="/usr/local/$tbarch/bin:${PATH}"
done

if test x"${JAVA_HOME}" != x""; then
    PATH="${JAVA_HOME}/bin:${PATH}"
else
    for jdk in /usr/local/jdk*; do
	PATH="${jdk}/bin:${PATH}"
	break
    done
fi

AC_SUBST(PATH)

Leigh B Stoller's avatar
Leigh B Stoller committed
77
CPPFLAGS="-I/usr/local/include"
78

Leigh B Stoller's avatar
Leigh B Stoller committed
79
# BEGIN Python detection. For the event library.
80
AC_PATH_PROGS(PYTHON, python python2.7 python2.6 python2.5 python2.4 python2.3 python2.2)
81 82 83 84 85

if test x"$PYTHON" = x""; then
    AC_MSG_ERROR([python not detected])
fi

86
PYTHON_VERSION=`${PYTHON} -V 2>&1 | cut -d ' ' -f 2 | cut -d '.' -f 1,2 | head -1`
87
PYTHON_PATH=`dirname ${PYTHON}`
88 89 90
if test ! -d "$PYTHON_PATH/include"; then
    PYTHON_PATH=`dirname ${PYTHON_PATH}`
fi
91 92 93 94
PYTHON_INCLUDE="${PYTHON_PATH}/include/python${PYTHON_VERSION}"
CPPFLAGS="${CPPFLAGS} -I${PYTHON_INCLUDE}"
AC_CHECK_HEADERS([Python.h],
		 [],
95
		 [AC_MSG_WARN("Cannot find Python.h in ${PYTHON_INCLUDE}")])
96 97 98
AC_SUBST(PYTHON_INCLUDE)
# END Python detection.

99 100 101 102 103 104
# Find perl for gettimezone invocation below
AC_PATH_PROGS(PERL, perl perl5)
if test x"$PERL" = x""; then
    AC_MSG_ERROR([perl not detected])
fi

105 106 107 108 109
AC_CHECK_TOOL(CC,gcc)
AC_CHECK_TOOL(CXX,g++)
AC_CHECK_TOOL(AR,ar)
AC_CHECK_TOOL(RANLIB,ranlib)
AC_CHECK_TOOL(STRIP,strip)
110

111 112
AC_EXEEXT

113
AC_PATH_PROG(DIG,dig)
114
AC_PATH_PROG(ELVIN_CONFIG,elvin-config)
115 116
AC_PATH_PROG(JAVAC,javac)
AC_PATH_PROG(JAR,jar)
117
AC_PATH_PROG(NC,nc)
118
AC_PATH_PROG(SUDO,sudo)
Mike Hibler's avatar
Mike Hibler committed
119
AC_PATH_PROG(UUIDGEN,uuidgen)
120

Robert Ricci's avatar
Robert Ricci committed
121
AC_CHECK_TOOL(SSH,ssh)
122

123 124
AC_CHECK_FUNCS(srandomdev)

125 126
AC_SUBST(optional_subdirs)

127
#
128
# These get defined in the definitions file (--with-TBDEFS).
129 130
# NB: See AC_DEFINE_UNQUOTED() calls below, if you want a variable
# to appear in config.h.
131
#
132
AC_SUBST(TBDBNAME)
133
AC_SUBST(TBERRORLOGDBNAME)
134
AC_SUBST(TBADMINGROUP)
Leigh B. Stoller's avatar
Leigh B. Stoller committed
135 136
AC_SUBST(DELAYCAPACITY)
AC_SUBST(IPBASE)
137 138
AC_SUBST(JAILIPBASE)
AC_SUBST(JAILIPMASK)
139 140
AC_SUBST(BOSSNODE)
AC_SUBST(USERNODE)
141
AC_SUBST(FSNODE)
142
AC_SUBST(EVENTSERVER)
143
AC_SUBST(BOSSEVENTPORT)
144
AC_SUBST(OURDOMAIN)
145 146 147 148 149
AC_SUBST(USERSROOT_DIR)
AC_SUBST(PROJROOT_DIR)
AC_SUBST(GROUPSROOT_DIR)
AC_SUBST(SCRATCHROOT_DIR)
AC_SUBST(SHAREROOT_DIR)
150 151 152
AC_SUBST(FSDIR_PROJ)
AC_SUBST(FSDIR_GROUPS)
AC_SUBST(FSDIR_USERS)
153
AC_SUBST(FSDIR_SHARE)
154
AC_SUBST(FSDIR_SCRATCH)
155
AC_SUBST(FS_WITH_QUOTAS)
156
AC_SUBST(TRACK_INTERSWITCH_BANDWIDTH)
157
AC_SUBST(TIMESTAMPS)
158
AC_SUBST(OURTIMEZONE)
159
AC_SUBST(NODECONSOLE)
160
AC_SUBST(MFSVERSION)
161
AC_SUBST(UNIFIED_BOSS_AND_OPS)
162
AC_SUBST(DISABLE_NSE)
163 164
AC_SUBST(DISABLE_DHCPD_INSTALL)
AC_SUBST(DISABLE_NAMED_INSTALL)
165
AC_SUBST(DISABLE_NAMED_SETUP)
166
AC_SUBST(DISABLE_EXPORTS_SETUP)
167
AC_SUBST(DISABLE_EVENT_SCHED)
168 169 170
AC_SUBST(CLIENT_ETCDIR)
AC_SUBST(CLIENT_BINDIR)
AC_SUBST(CLIENT_VARDIR)
171
AC_SUBST(CLIENT_MANDIR)
172
AC_SUBST(SNMP_RW_COMMUNITY)
173 174 175
AC_SUBST(WWWHOST)
AC_SUBST(WWW)
AC_SUBST(TBBASE)
176
AC_SUBST(TBDEFS)
177 178 179 180 181 182 183 184
AC_SUBST(TBDOCBASE)
AC_SUBST(TBWWW)
AC_SUBST(THISHOMEBASE)
AC_SUBST(TBSECURECOOKIES)
AC_SUBST(TBCOOKIESUFFIX)
AC_SUBST(TBAUTHDOMAIN)
AC_SUBST(TBAUTHTIMEOUT)
AC_SUBST(TBMAINSITE)
185
AC_SUBST(FANCYBANNER)
186
AC_SUBST(SFSSUPPORT)
187
AC_SUBST(ELABINELAB)
188 189 190
AC_SUBST(OUTERBOSS_NODENAME)
AC_SUBST(OUTERBOSS_XMLRPCPORT)
AC_SUBST(OUTERBOSS_SSLCERTNAME)
191
AC_SUBST(SUBBOSS_SSLCERTNAME)
192
AC_SUBST(PLABSUPPORT)
193
AC_SUBST(PUBSUPPORT)
194
AC_SUBST(WIKISUPPORT)
195
AC_SUBST(MAILMANSUPPORT)
196
AC_SUBST(BUGDBSUPPORT)
197
AC_SUBST(OPSDBSUPPORT)
Timothy Stack's avatar
Timothy Stack committed
198
AC_SUBST(NFSTRACESUPPORT)
199
AC_SUBST(NTPSERVER)
200
AC_SUBST(PROJECTMAILLISTS)
201 202 203 204 205
AC_SUBST(EXTERNAL_NTPSERVER1)
AC_SUBST(EXTERNAL_NTPSERVER2)
AC_SUBST(EXTERNAL_NTPSERVER3)
AC_SUBST(EXTERNAL_NTPSERVER4)
AC_SUBST(NTPDRIFTFILE)
206
AC_SUBST(TBLOGFACIL)
207
AC_SUBST(TESTBED_NETWORK)
208
AC_SUBST(EXTERNAL_TESTBED_NETWORK)
209
AC_SUBST(TESTBED_NETMASK)
210
AC_SUBST(EXTERNAL_TESTBED_NETMASK)
211
AC_SUBST(BOSSNODE_IP)
212
AC_SUBST(EXTERNAL_BOSSNODE_IP)
213
AC_SUBST(USERNODE_IP)
214
AC_SUBST(EXTERNAL_USERNODE_IP)
215 216
AC_SUBST(FSNODE_IP)
AC_SUBST(EXTERNAL_FSNODE_IP)
217 218 219 220 221 222 223 224 225
AC_SUBST(CONTROL_ROUTER_IP)
AC_SUBST(CONTROL_NETWORK)
AC_SUBST(CONTROL_NETMASK)
AC_SUBST(PRIVATE_NETWORK)
AC_SUBST(PRIVATE_ROUTER)
AC_SUBST(PRIVATE_NETMASK)
AC_SUBST(PUBLIC_NETWORK)
AC_SUBST(PUBLIC_ROUTER)
AC_SUBST(PUBLIC_NETMASK)
226 227 228
AC_SUBST(MANAGEMENT_NETWORK)
AC_SUBST(MANAGEMENT_NETMASK)
AC_SUBST(MANAGEMENT_ROUTER)
229 230
AC_SUBST(VIRTNODE_NETWORK)
AC_SUBST(VIRTNODE_NETMASK)
231
AC_SUBST(DHCPD_DYNRANGE)
232
AC_SUBST(DHCPD_EXTRAIFS)
233
AC_SUBST(DHCPD_CONTROLNET_DECL)
234
AC_SUBST(NAMED_FORWARDERS)
235
AC_SUBST(NAMED_ALSONOTIFY)
236 237 238 239
AC_SUBST(SSLCERT_COUNTRY)
AC_SUBST(SSLCERT_STATE)
AC_SUBST(SSLCERT_LOCALITY)
AC_SUBST(SSLCERT_ORGNAME)
240 241
AC_SUBST(FRISEBEEMCASTADDR)
AC_SUBST(FRISEBEEMCASTPORT)
242
AC_SUBST(FRISEBEENUMPORTS)
243
AC_SUBST(WINSUPPORT)
Mike Hibler's avatar
Mike Hibler committed
244
AC_SUBST(NSVERIFY)
245
AC_SUBST(CVSSUPPORT)
246
AC_SUBST(TRACSUPPORT)
247
AC_SUBST(CHATSUPPORT)
248
AC_SUBST(STAMPS)
249
AC_SUBST(ARCHIVESUPPORT)
250 251
AC_SUBST(MIN_UNIX_UID)
AC_SUBST(MIN_UNIX_GID)
252
AC_SUBST(DELAYTHRESH)
253
AC_SUBST(PELABSUPPORT)
254
AC_SUBST(MOBILESUPPORT)
255
AC_SUBST(ELVIN_COMPAT)
256 257
AC_SUBST(ISOLATEADMINS)
AC_SUBST(DYNAMICROOTPASSWORDS)
258
AC_SUBST(TPM)
259
AC_SUBST(REMOTEWIKIDOCS)
Leigh B. Stoller's avatar
Leigh B. Stoller committed
260
AC_SUBST(PROTOGENI_SUPPORT)
261 262 263
AC_SUBST(PROTOGENI_WEBSITE)
AC_SUBST(PROTOGENI_ISCLEARINGHOUSE)
AC_SUBST(PROTOGENI_EMAIL)
Leigh B. Stoller's avatar
Leigh B. Stoller committed
264
AC_SUBST(PROTOGENI_DOMAIN)
265 266
AC_SUBST(PROTOGENI_RPCPORT)
AC_SUBST(PROTOGENI_RPCNAME)
267
AC_SUBST(PROTOGENI_LOCALUSER)
268
AC_SUBST(PROTOGENI_MAXSERVERLOAD)
269
AC_SUBST(PROTOGENI_GENIWEBLOGIN)
270
AC_SUBST(PROTOGENI_NONFSMOUNTS)
271
AC_SUBST(GENI_PUBRPCPORT)
272
AC_SUBST(PROTOGENI_URL)
273
AC_SUBST(PROTOGENI_GENIRACK)
Gary Wong's avatar
Gary Wong committed
274
AC_SUBST(PROTOGENI_NICKNAME)
275
AC_SUBST(STANDALONE_CLEARINGHOUSE)
276 277
AC_SUBST(CONFIG_TARGETSYS)
AC_SUBST(TARGETSYS_TARGET)
278
AC_SUBST(GMAP_API_KEY)
279
AC_SUBST(NODE_USAGE_SUPPORT)
280
AC_SUBST(NOSTACKMIB)
281
AC_SUBST(EXP_VIS_SUPPORT)
282
AC_SUBST(NOSHAREDFS)
283
AC_SUBST(IMPORT_TMPDIR)
284
AC_SUBST(SELFLOADER_DATA)
285
AC_SUBST(TBUSEDBI)
286
AC_SUBST(BIGDB)
287
AC_SUBST(NEEDMCQUERIER)
288 289
AC_SUBST(OPSVM_ENABLE)
AC_SUBST(OPSVM_MOUNTPOINT)
290 291
AC_SUBST(PORTAL_ENABLE)
AC_SUBST(PORTAL_ISPRIMARY)
292
AC_SUBST(CLOUDLAB_FEDERATED)
293
AC_SUBST(LINUX_FSNODE)
294 295
AC_SUBST(VPUBADDR_BASE)
AC_SUBST(VPUBADDR_BITLEN)
296 297 298 299
AC_SUBST(WINDOWS_ORGNAME)
AC_SUBST(WINDOWS_OWNER)
AC_SUBST(WINDOWS_TIMEZONE)
AC_SUBST(WINDOWS_KEY_7PRO_X86)
300 301 302 303
AC_SUBST(FIREWALL_BOSS)
AC_SUBST(FIREWALL_OPS)
AC_SUBST(FIREWALL_BOSS_LOCALRULETMPL)
AC_SUBST(FIREWALL_OPS_LOCALRULETMPL)
304
AC_SUBST(SPEWFROMOPS)
305
AC_SUBST(NOSITECHECKIN)
306
AC_SUBST(EC2META_ENABLE)
307
AC_SUBST(BROWSER_CONSOLE_ENABLE)
Gary Wong's avatar
Gary Wong committed
308 309
AC_SUBST(IPV6_ENABLED)
AC_SUBST(IPV6_SUBNET_PREFIX)
310
AC_SUBST(NFSMAPTOUSER)
311
AC_SUBST(IMAGEPROVENANCE)
312
AC_SUBST(IMAGEDIRECTORIES)
313
AC_SUBST(IMAGEDELTAS)
314
AC_SUBST(IMAGEUPLOADTOFS)
315
AC_SUBST(PROFILEVERSIONS)
316
AC_SUBST(NOVIRTNFSMOUNTS)
317 318 319 320 321
AC_SUBST(WITHZFS)
AC_SUBST(ZFS_ROOT)
AC_SUBST(ZFS_QUOTA_USER)
AC_SUBST(ZFS_QUOTA_PROJECT)
AC_SUBST(ZFS_QUOTA_GROUP)
322 323 324
AC_SUBST(ZFS_QUOTA_USER_X)
AC_SUBST(ZFS_QUOTA_PROJECT_X)
AC_SUBST(ZFS_QUOTA_GROUP_X)
325
AC_SUBST(ZFS_NOEXPORT)
326
AC_SUBST(INCREMENTAL_MOUNTD)
327 328
AC_SUBST(WITHAMD)
AC_SUBST(AMD_ROOT)
329
AC_SUBST(NFSMFS_ROOT)
330
AC_SUBST(BS_IQN_PREFIX)
331
AC_SUBST(ATTENUATOR)
332
AC_SUBST(CLUSTER_PORTAL)
333 334
AC_SUBST(CLUSTER_PUBSUBD_SSLPORT)
AC_SUBST(CLUSTER_PUBSUBD_ALTPORT)
335
AC_SUBST(EXPIRE_PASSWORDS)
336 337
AC_SUBST(SDCOLLECTD_DOSTATS)
AC_SUBST(SDCOLLECTD_USE_RRDTOOL)
338
AC_SUBST(BOOTINFO_EVENTS)
339
AC_SUBST(UI_EXTERNAL_ACCOUNTS)
340

341 342 343 344 345 346
#
# Offer both versions of the email addresses that have the @ escaped
# for perl (the default), and that don't
#
AC_SUBST(TBOPSEMAIL)
AC_SUBST(TBOPSEMAIL_NOSLASH)
347 348
AC_SUBST(TBROBOCOPSEMAIL)
AC_SUBST(TBROBOCOPSEMAIL_NOSLASH)
349 350 351 352 353 354 355 356 357 358 359 360
AC_SUBST(TBLOGSEMAIL)
AC_SUBST(TBLOGSEMAIL_NOSLASH)
AC_SUBST(TBWWWEMAIL)
AC_SUBST(TBWWWEMAIL_NOSLASH)
AC_SUBST(TBAPPROVALEMAIL)
AC_SUBST(TBAPPROVALEMAIL_NOSLASH)
AC_SUBST(TBAUDITEMAIL)
AC_SUBST(TBAUDITEMAIL_NOSLASH)
AC_SUBST(TBSTATEDEMAIL)
AC_SUBST(TBSTATEDEMAIL_NOSLASH)
AC_SUBST(TBTESTSUITEEMAIL)
AC_SUBST(TBTESTSUITEEMAIL_NOSLASH)
361 362
AC_SUBST(TBAUTOMAILEMAIL)
AC_SUBST(TBAUTOMAILEMAIL_NOSLASH)
363 364 365 366
AC_SUBST(TBACTIVEARCHIVE)
AC_SUBST(TBACTIVEARCHIVE_NOSLASH)
AC_SUBST(TBUSERSARCHIVE)
AC_SUBST(TBUSERSARCHIVE_NOSLASH)
Leigh B. Stoller's avatar
Leigh B. Stoller committed
367 368
AC_SUBST(TBERRORSEMAIL)
AC_SUBST(TBERRORSEMAIL_NOSLASH)
369

370 371 372 373 374
#
# For snmpit support of Arista switch.
#
AC_SUBST(ARISTA_SWITCH_XMLRPCPORT)

375 376
#
# Defaults for for above variables.
377
#
378
TBERRORLOGDBNAME="errorlog"
379
TBADMINGROUP="flux"
380 381 382
CLIENT_ETCDIR="/etc/emulab"
CLIENT_BINDIR="/usr/local/etc/emulab"
CLIENT_VARDIR="/var/emulab"
383
CLIENT_MANDIR="/usr/local/man"
384 385
TBSECURECOOKIES=1
TBMAINSITE=0
386
TBUSEDBI=0
387
BIGDB=0
388
FANCYBANNER=0
389 390 391 392
VIRTNODE_NETWORK=172.16.0.0
VIRTNODE_NETMASK=255.240.0.0
JAILIPBASE=$VIRTNODE_NETWORK
JAILIPMASK=$VIRTNODE_NETMASK
393
IPBASE=10
394
SFSSUPPORT=0
395
ELABINELAB=0
396 397 398
OUTERBOSS_NODENAME=""
OUTERBOSS_XMLRPCPORT=3069
OUTERBOSS_SSLCERTNAME="/etc/outer_emulab.pem"
399
SUBBOSS_SSLCERTNAME="/etc/subboss.pem"
400
PLABSUPPORT=0
401
PUBSUPPORT=0
402
WIKISUPPORT=0
403
BUGDBSUPPORT=0
404
OPSDBSUPPORT=0
405
MAILMANSUPPORT=0
406
PROJECTMAILLISTS=0
407
WINSUPPORT=0
Mike Hibler's avatar
Mike Hibler committed
408
NSVERIFY=1
409
CVSSUPPORT=0
410
TRACSUPPORT=0
411
CHATSUPPORT=0
412
STAMPS=0
413
ARCHIVESUPPORT=0
Timothy Stack's avatar
Timothy Stack committed
414
NFSTRACESUPPORT=0
415
TBLOGFACIL="local5"
416
BOSSEVENTPORT=16505
417
NTPSERVER="ops"
418 419 420 421 422
EXTERNAL_NTPSERVER1="0.pool.ntp.org"
EXTERNAL_NTPSERVER2="1.pool.ntp.org"
EXTERNAL_NTPSERVER3="2.pool.ntp.org"
EXTERNAL_NTPSERVER4="3.pool.ntp.org"
NTPDRIFTFILE="/var/db/ntp.drift"
423
UNIFIED_BOSS_AND_OPS=0
424 425
DISABLE_NAMED_INSTALL=0
DISABLE_DHCPD_INSTALL=0
426
DISABLE_NAMED_SETUP=0
chuck cranor's avatar
chuck cranor committed
427
DISABLE_EXPORTS_SETUP=0
428 429
FRISEBEEMCASTADDR="234.5.6"
FRISEBEEMCASTPORT=3564
430
FRISEBEENUMPORTS=0
431 432
MIN_UNIX_UID=10000
MIN_UNIX_GID=6000
433
DELAYTHRESH=2
434
PELABSUPPORT=0
435
MOBILESUPPORT=0
436
ELVIN_COMPAT=0
437 438
ISOLATEADMINS=1
DYNAMICROOTPASSWORDS=1
439
TPM=0
440
REMOTEWIKIDOCS=1
Leigh B. Stoller's avatar
Leigh B. Stoller committed
441
PROTOGENI_SUPPORT=0
442 443 444
PROTOGENI_ISCLEARINGHOUSE=0
PROTOGENI_EMAIL="geni-dev-utah@flux.utah.edu"
PROTOGENI_WEBSITE="www.emulab.net"
Leigh B. Stoller's avatar
Leigh B. Stoller committed
445
PROTOGENI_DOMAIN="unknown"
446 447
PROTOGENI_RPCPORT=12369
PROTOGENI_RPCNAME=""
448 449
PROTOGENI_LOCALUSER=0
PROTOGENI_GENIWEBLOGIN=0
450
PROTOGENI_MAXSERVERLOAD=12
451
PROTOGENI_NONFSMOUNTS=0
452
GENI_PUBRPCPORT=12370
453
PROTOGENI_GENIRACK=0
454 455
CONFIG_TARGETSYS=0
TARGETSYS_TARGET=""
Gary Wong's avatar
Gary Wong committed
456
PROTOGENI_NICKNAME="unknown"
457
STANDALONE_CLEARINGHOUSE=0
458
NODE_USAGE_SUPPORT=0
459
EXP_VIS_SUPPORT=0
460
NOSTACKMIB=0
461
NOSHAREDFS=0
462
IMPORT_TMPDIR="/q"
463
NFSRACY=1
464
SELFLOADER_DATA=""
465
NEEDMCQUERIER=0
466 467
OPSVM_ENABLE=0
OPSVM_MOUNTPOINT="/ops"
468
OURTIMEZONE="America/Denver"
469
NODECONSOLE="sio"
470
MFSVERSION=""
471 472
PORTAL_ENABLE=0
PORTAL_ISPRIMARY=0
473
CLOUDLAB_FEDERATED=0
474
LINUX_FSNODE=0
475
DHCPD_EXTRAIFS=""
476 477
VPUBADDR_BASE="none"
VPUBADDR_BITLEN="none"
478
ARISTA_SWITCH_XMLRPCPORT=80
479 480 481 482
FIREWALL_BOSS=0
FIREWALL_OPS=0
FIREWALL_BOSS_LOCALRULETMPL=""
FIREWALL_OPS_LOCALRULETMPL=""
483
SPEWFROMOPS=0
484
NOSITECHECKIN=0
485
EC2META_ENABLE=0
486
BROWSER_CONSOLE_ENABLE=0
487 488
IPV6_ENABLED=0
IPV6_SUBNET_PREFIX=""
489 490 491
MANAGEMENT_NETWORK="10.249.249.0"
MANAGEMENT_NETMASK="255.255.255.0"
MANAGEMENT_ROUTER="10.249.249.253"
492
NFSMAPTOUSER="root"
493
IMAGEPROVENANCE=0
494
IMAGEDIRECTORIES=0
495
IMAGEDELTAS=0
496
IMAGEUPLOADTOFS=0
497
PROFILEVERSIONS=0
498
NOVIRTNFSMOUNTS=0
499 500 501 502 503
WITHZFS=0
ZFS_ROOT=z
ZFS_QUOTA_USER="1G"
ZFS_QUOTA_PROJECT="100G"
ZFS_QUOTA_GROUP="10G"
504 505 506
ZFS_QUOTA_USER_X="1.0"
ZFS_QUOTA_PROJECT_X="1.0"
ZFS_QUOTA_GROUP_X="1.0"
507
ZFS_NOEXPORT=0
508
INCREMENTAL_MOUNTD=0
509
WITHAMD=0
510
AMD_ROOT=/.amd_mnt/ops
511
NFSMFS_ROOT=""
512
BS_IQN_PREFIX=iqn.2000-10.net.emulab
513
ATTENUATOR=""
514
CLUSTER_PORTAL=""
515 516
CLUSTER_PUBSUBD_ALTPORT=""
CLUSTER_PUBSUBD_SSLPORT=""
517
EXPIRE_PASSWORDS=1
518 519
SDCOLLECTD_DOSTATS=0
SDCOLLECTD_USE_RRDTOOL=0
520
BOOTINFO_EVENTS=1
521
UI_EXTERNAL_ACCOUNTS=0
522

523 524 525 526 527 528 529 530 531 532
#
# XXX You really don't want to change these!
# They are ingrained and who knows what might break if you change them.
#
USERSROOT_DIR="/users"
PROJROOT_DIR="/proj"
GROUPSROOT_DIR="/groups"
SHAREROOT_DIR="/share"
SCRATCHROOT_DIR=""

Leigh B Stoller's avatar
Leigh B Stoller committed
533 534 535 536 537 538
#
# Flag as full Emulab build (for clientside). 
#
WITH_EMULAB=1
AC_SUBST(WITH_EMULAB)

539 540 541
#
# Okay, I know this is improper usage of --with. Too bad.
#
542 543
AC_ARG_WITH(TBDEFS,
[  --with-TBDEFS=name	Specify definitions file (defs-default default)],
544 545
[
    if test "$withval" = "yes"; then
546
	AC_MSG_ERROR([Invalid TBDEFS - Must specify the value])
547
    fi
548
    TBDEFS="$withval"
549
    TBPATH=`dirname $withval`
550
],[
551 552 553
    AC_MSG_ERROR(
	[The required --with-TBDEFS= argument was not given.
The value of --with-TBDEFS= must be the path to your Emulab defs file.
554 555
Copy and modify the defs-example file for your Emulab installation.
defs-default has values for Utah, including client-side image compilations.])
556
])
557 558 559 560 561

if test -f $TBDEFS; then
    #
    # Remove the comments and newlines.  Really, that's what it does.
    #
562 563
    OLDPATH=$PATH
    PATH="$TBPATH:$PATH"
564
    . $TBDEFS
565
    PATH=$OLDPATH
566 567 568
else
	AC_MSG_ERROR([Definitions file $TBDEFS was not found.])
fi
569

570 571 572 573 574
# XXX this can optionally be set in the defs file
if test -n "$FSDIR_SCRATCH"; then
    SCRATCHROOT_DIR="/scratch"
fi

Gary Wong's avatar
Gary Wong committed
575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604
# Try to guess ProtoGENI nickname if it wasn't specified explicitly,
# for backward compatibility (nobody used to care what they were called)
if test x"$PROTOGENI_NICKNAME" = x"unknown"; then
    case $OURDOMAIN in
    *gpolab.bbn.com) PROTOGENI_NICKNAME="gpo-ig";;
    *northwestern.edu) PROTOGENI_NICKNAME="northwestern-ig";;
    *lan.sdn.uky.edu) PROTOGENI_NICKNAME="uky-ig";;
    *kettering.edu) PROTOGENI_NICKNAME="kettering-ig";;
    *rnoc.gatech.edu) PROTOGENI_NICKNAME="gatech-ig";;
    *cs.princeton.edu) PROTOGENI_NICKNAME="princeton-ig";;
    *clemson.edu) PROTOGENI_NICKNAME="clemson-ig";;
    *ku.gpeni.net) PROTOGENI_NICKNAME="kansas-ig";;
    *nyu.edu) PROTOGENI_NICKNAME="nyu-ig";;
    *maxgigapop.net) PROTOGENI_NICKNAME="max-ig";;
    *nysernet.org) PROTOGENI_NICKNAME="nysernet-ig";;
    *sox.net) PROTOGENI_NICKNAME="sox-ig";;
    *illinois.edu) PROTOGENI_NICKNAME="illinois-ig";;
    *rnet.missouri.edu) PROTOGENI_NICKNAME="missouri-ig";;
    *wisc.edu) PROTOGENI_NICKNAME="wisconsin-ig";;
    *rutgers.edu) PROTOGENI_NICKNAME="rutgers-ig";;
    *stanford.edu) PROTOGENI_NICKNAME="stanford-ig";;
    *it.cornell.edu) PROTOGENI_NICKNAME="cornell-ig";;
    *case.edu) PROTOGENI_NICKNAME="cwru-ig";;
    *iu.edu) PROTOGENI_NICKNAME="moxi-ig";;
    *uchicago.edu) PROTOGENI_NICKNAME="uchicago-ig";;
    *metrodatacenter.com) PROTOGENI_NICKNAME="ohmetrodc-ig";;
    *nps.edu) PROTOGENI_NICKNAME="nps-ig";;
    *osu.edu) PROTOGENI_NICKNAME="osu-ig";;
    *umkc.edu) PROTOGENI_NICKNAME="umkc-ig";;
    *idre.ucla.edu) PROTOGENI_NICKNAME="ucla-ig";;
605 606
    *washington.edu) PROTOGENI_NICKNAME="uwashington-ig";;
    *rnet.missouri.edu) PROTOGENI_NICKNAME="missouri-ig";;
Gary Wong's avatar
Gary Wong committed
607
    *pks2.sdn.uky.edu) PROTOGENI_NICKNAME="ukypks2-ig";;
608 609
    *mcv.sdn.uky.edu) PROTOGENI_NICKNAME="ukymcv-ig";;
    *hawaii.edu) PROTOGENI_NICKNAME="hawaii-ig";;
Gary Wong's avatar
Gary Wong committed
610 611
    *colorado.edu) PROTOGENI_NICKNAME="colorado-ig";;
    *cenic.net) PROTOGENI_NICKNAME="cenic-ig";;
612
    *vt.edu) PROTOGENI_NICKNAME="vt-ig";;
613 614 615 616 617 618 619 620
    *vcu.instageni.net) PROTOGENI_NICKNAME="vcu-ig";;
    *utc.edu) PROTOGENI_NICKNAME="utc-ig";;
    *research.umich.edu) PROTOGENI_NICKNAME="umich-ig";;
    *ucsd.edu) PROTOGENI_NICKNAME="ucsd-ig";;
    *uvm.edu) PROTOGENI_NICKNAME="uvm-ig";;
    *utdallas.edu) PROTOGENI_NICKNAME="utdallas-ig";;
    *odu.edu) PROTOGENI_NICKNAME="odu-ig";;
    *louisiana.edu) PROTOGENI_NICKNAME="ullafayette-ig";;
621
    *stitch.geniracks.net) PROTOGENI_NICKNAME="utah-stitch";;
Gary Wong's avatar
Gary Wong committed
622 623 624
    esac
fi

625 626 627 628 629 630
#
# These must come after the "eval" above, since the variables are not
# defined until the defs file is taken in.
#
# Be sure to add to config.h.in!
#
631
if test x"$prefix" = x"NONE"; then
632
    AC_DEFINE_UNQUOTED(TBROOT, "/usr/testbed", [FS base for Emulab files])
633
else
634 635
    AC_DEFINE_UNQUOTED(TBROOT, "$prefix", [FS base for Emulab files])
fi
Leigh B Stoller's avatar
Leigh B Stoller committed
636
AC_DEFINE_UNQUOTED(TBMAINSITE, $TBMAINSITE, [The Mothership])
637 638 639 640 641 642 643 644 645 646 647 648 649
AC_DEFINE_UNQUOTED(TBDBNAME, "$TBDBNAME", [Emulab DB name])
AC_DEFINE_UNQUOTED(TBERRORLOGDBNAME, "$TBERRORLOGDBNAME", [Emulab errorlog DB])
AC_DEFINE_UNQUOTED(TBADMINGROUP, "$TBADMINGROUP", [Unix group of admin user])
AC_DEFINE_UNQUOTED(IPBASE, "$IPBASE", [Base of IPv4 space used for experiments])
AC_DEFINE_UNQUOTED(JAILIPBASE, "$JAILIPBASE", [Base of IPv4 space used for VMs])
AC_DEFINE_UNQUOTED(JAILIPMASK, "$JAILIPMASK", [Netmask for JAILIPBASE])
AC_DEFINE_UNQUOTED(BOSSNODE, "$BOSSNODE", [DNS name of boss node])
AC_DEFINE_UNQUOTED(BOSSNODE_IP, "$BOSSNODE_IP", [IPv4 address of boss node to be used by nodes])
AC_DEFINE_UNQUOTED(EXTERNAL_BOSSNODE_IP, "$EXTERNAL_BOSSNODE_IP", [IPv4 address of boss used from outside])
AC_DEFINE_UNQUOTED(USERNODE, "$USERNODE", [DNS name of ops node])
AC_DEFINE_UNQUOTED(USERNODE_IP, "$USERNODE_IP", [IPv4 address of ops node to be used by nodes])
AC_DEFINE_UNQUOTED(EXTERNAL_USERNODE_IP, "$EXTERNAL_USERNODE_IP", [IPv4 address of ops used from outside])
AC_DEFINE_UNQUOTED(FSNODE, "$FSNODE", [DNS name of fs node])
650
if test -n "$FSNODE_IP"; then
651
	AC_DEFINE_UNQUOTED(FSNODE_IP, "$FSNODE_IP", [IPv4 address of fs node to be used by nodes])
652
elif test "$USERNODE" = "$FSNODE"; then
653
	AC_DEFINE_UNQUOTED(FSNODE_IP, "$USERNODE_IP", [IPv4 address of fs node to be used by nodes])
654
elif test "$BOSSNODE" = "$FSNODE"; then
655 656 657 658 659 660 661 662 663 664 665 666 667
	AC_DEFINE_UNQUOTED(FSNODE_IP, "$BOSSNODE_IP", [IPv4 address of fs node to be used by nodes])
fi
AC_DEFINE_UNQUOTED(CONTROL_ROUTER_IP, "$CONTROL_ROUTER_IP", [IPv4 address of router to be used by nodes])
AC_DEFINE_UNQUOTED(CONTROL_NETWORK, "$CONTROL_NETWORK", [IPv4 node control network])
AC_DEFINE_UNQUOTED(CONTROL_NETMASK, "$CONTROL_NETMASK", [IPv4 node control network mask])
AC_DEFINE_UNQUOTED(USERSROOT_DIR, "$USERSROOT_DIR", [Root of 'users' filesystem])
AC_DEFINE_UNQUOTED(PROJROOT_DIR, "$PROJROOT_DIR", [Root of 'proj' filesystem])
AC_DEFINE_UNQUOTED(GROUPSROOT_DIR, "$GROUPSROOT_DIR", [Root of 'groups' filesystem])
AC_DEFINE_UNQUOTED(SCRATCHROOT_DIR, "$SCRATCHROOT_DIR", [Root of 'scratch' filesystem])
AC_DEFINE_UNQUOTED(SHAREROOT_DIR, "$SHAREROOT_DIR", [Root of 'share' filesystem])
AC_DEFINE_UNQUOTED(FSDIR_PROJ, "$FSDIR_PROJ", [Mount point of 'proj' filesystem on fs node])
AC_DEFINE_UNQUOTED(FSDIR_GROUPS, "$FSDIR_GROUPS", [Mount point of 'groups' filesystem on fs node])
AC_DEFINE_UNQUOTED(FSDIR_USERS, "$FSDIR_USERS", [Mount point of 'users' filesystem on fs node])
668
if test -n "$FSDIR_SHARE"; then
669
    AC_DEFINE_UNQUOTED(FSDIR_SHARE, "$FSDIR_SHARE", [Mount point of 'share' filesystem on fs node])
670
fi
671
if test -n "$FSDIR_SCRATCH"; then
672
    AC_DEFINE_UNQUOTED(FSDIR_SCRATCH, "$FSDIR_SCRATCH", [Mount point of 'scratch' filesystem on fs node])
673
fi
674 675 676 677
AC_DEFINE_UNQUOTED(BOSSEVENTPORT, "$BOSSEVENTPORT", [IPv4 address of pubsub server on boss])
AC_DEFINE_UNQUOTED(FRISEBEEMCASTADDR, "$FRISEBEEMCASTADDR", [Base IPv4 multicast address for disk imaging])
AC_DEFINE_UNQUOTED(FRISEBEEMCASTPORT, "$FRISEBEEMCASTPORT", [Base IPv4 port for disk imaging])
AC_DEFINE_UNQUOTED(FRISEBEENUMPORTS, "$FRISEBEENUMPORTS", [Number of IPv4 ports for disk imaging])
678

679 680 681 682 683 684
AC_DEFINE_UNQUOTED(NTPSERVER, "$NTPSERVER", [NTP server for nodes])
AC_DEFINE_UNQUOTED(EXTERNAL_NTPSERVER1, "$EXTERNAL_NTPSERVER1", [External NTP server for NTP node])
AC_DEFINE_UNQUOTED(EXTERNAL_NTPSERVER2, "$EXTERNAL_NTPSERVER2", [External NTP server for NTP node])
AC_DEFINE_UNQUOTED(EXTERNAL_NTPSERVER3, "$EXTERNAL_NTPSERVER3", [External NTP server for NTP node])
AC_DEFINE_UNQUOTED(EXTERNAL_NTPSERVER4, "$EXTERNAL_NTPSERVER4", [External NTP server for NTP node])
AC_DEFINE_UNQUOTED(NTPDRIFTFILE, "$NTPDRIFTFILE", [Location of NTP driftfile])
685

686 687 688
AC_DEFINE_UNQUOTED(MANAGEMENT_NETWORK, "$MANAGEMENT_NETWORK", [IPv4 node mangagement network])
AC_DEFINE_UNQUOTED(MANAGEMENT_NETMASK, "$MANAGEMENT_NETMASK", [IPv4 node management netmask])
AC_DEFINE_UNQUOTED(MANAGEMENT_ROUTER, "$MANAGEMENT_ROUTER", [IPv4 node management default GW])
689

690
if test $OPSDBSUPPORT -eq 1; then
691
    AC_DEFINE_UNQUOTED(OPSDBSUPPORT, 1, [Obsolete])
692 693
fi

694
if test $ELVIN_COMPAT -eq 1; then
695
    AC_DEFINE_UNQUOTED(ELVIN_COMPAT, 1, [Obsolete])
696 697
fi

698
if test $ELABINELAB -eq 1; then
699
    AC_DEFINE_UNQUOTED(ELABINELAB, 1, [For an Emulab-in-Emulab configuration])
700
fi
701

702
if test $ISOLATEADMINS -eq 1; then
703
    AC_DEFINE_UNQUOTED(ISOLATEADMINS, 1, [Do not allow admins and non-admins in same project])
704 705
fi
if test $DYNAMICROOTPASSWORDS -eq 1; then
706
    AC_DEFINE_UNQUOTED(DYNAMICROOTPASSWORDS, 1, [Per-node root passwords])
707
fi
708
if test $TPM -eq 1; then
709
    AC_DEFINE_UNQUOTED(TPM, 1, [Something about TPM])
710
fi
711
if test $NOSHAREDFS -eq 1; then
712
    AC_DEFINE_UNQUOTED(NOSHAREDFS, 1, [Do not allow NFS-shared filesystems])
713 714
fi
if test $NFSRACY -eq 1; then
715
    AC_DEFINE_UNQUOTED(NFSRACY, 1, [NFS server has race])
716
fi
717
if test $OPSVM_ENABLE -eq 1; then
718 719
    AC_DEFINE_UNQUOTED(OPSVM_ENABLE, 1, [ops node is a VM])
    AC_DEFINE_UNQUOTED(OPSVM_MOUNTPOINT, $OPSVM_MOUNTPOINT, [mount point on boss for ops VM FSes])
720
fi
721
if test $SPEWFROMOPS -eq 1; then
722
    AC_DEFINE_UNQUOTED(SPEWFROMOPS, 1, [Server rpm/tarballs from ops rather than boss])
723
fi
724
if test $PROTOGENI_SUPPORT -eq 1; then
725
    AC_DEFINE_UNQUOTED(PROTOGENI_SUPPORT, 1, [Support Protogeni])
726 727
fi
if test $PROTOGENI_GENIRACK -eq 1; then
728
    AC_DEFINE_UNQUOTED(PROTOGENI_GENIRACK, 1, [Support Protogeni rack])
729
fi
730
if test $IMAGEPROVENANCE -eq 1; then
731
    AC_DEFINE_UNQUOTED(IMAGEPROVENANCE, 1, [Support image versioning])
732 733
fi
if test $IMAGEDELTAS -eq 1; then
734
    AC_DEFINE_UNQUOTED(IMAGEDELTAS, 1, [Support imagezip delta images])
735
fi
736 737 738
if test $IMAGEUPLOADTOFS -eq 1; then
    AC_DEFINE_UNQUOTED(IMAGEUPLOADTOFS, 1, [Support image uploading to fs node])
fi
739
if test $NOVIRTNFSMOUNTS -eq 1; then
740
    AC_DEFINE_UNQUOTED(NOVIRTNFSMOUNTS, 1, [Do not use NFS mounts on virtual nodes])
741 742
fi
if test $WITHZFS -eq 1; then
743
    AC_DEFINE_UNQUOTED(WITHZFS, 1, [Use ZFS on FS node for shared filesystems])
744
fi
745
if test $WITHAMD -eq 1; then
746
    AC_DEFINE_UNQUOTED(WITHAMD, 1, [Run AMD on boss node to handle shared FS mounts])
747
    AC_DEFINE_UNQUOTED(AMD_ROOT, "$AMD_ROOT", [Actual FS mount directory for AMD])
748
fi
749 750 751
if test $PROTOGENI_LOCALUSER -eq 1; then
    AC_DEFINE_UNQUOTED(PROTOGENI_LOCALUSER, 1, [Map geni users to local users,projects,groups])
fi
752
AC_DEFINE_UNQUOTED(IMPORT_TMPDIR, "$IMPORT_TMPDIR", [Directory to use for imported images])
753

754
LOG_TESTBED=`echo "LOG_$TBLOGFACIL" | tr a-z A-Z`
755
AC_DEFINE_UNQUOTED(LOG_TESTBED, $LOG_TESTBED, [Syslog log facility for Emulab daemons])
756 757
AC_SUBST(LOG_TESTBED)

758 759 760 761
#
# If the private network is different then the control network, we need
# an extra subnet decl for it in dhcpd.conf.template. This is enormously
# crude and simplistic, but works for the local case!
762
#
763 764
if test "$PRIVATE_NETWORK" != "$CONTROL_NETWORK"; then
    DHCPD_CONTROLNET_DECL="subnet $PRIVATE_NETWORK netmask $PRIVATE_NETMASK {}"
765 766
fi

767
#
768 769
# The email addresses need to be be munged for perl scripts. But,
# php needs them un-escaped
770
#
771
TBOPSEMAIL_NOSLASH="$TBOPSEMAIL"
772
TBOPSEMAIL="`echo $TBOPSEMAIL | sed -e 's/@/\\\@/'`"
773 774
TBROBOCOPSEMAIL_NOSLASH="$TBROBOCOPSEMAIL"
TBROBOCOPSEMAIL="`echo $TBROBOCOPSEMAIL | sed -e 's/@/\\\@/'`"
775
TBLOGSEMAIL_NOSLASH="$TBLOGSEMAIL"
776
TBLOGSEMAIL="`echo $TBLOGSEMAIL | sed -e 's/@/\\\@/'`"
777
TBAUDITEMAIL_NOSLASH="$TBAUDITEMAIL"
778
TBAUDITEMAIL="`echo $TBAUDITEMAIL | sed -e 's/@/\\\@/'`"
779 780 781 782
TBWWWEMAIL_NOSLASH="$TBWWWEMAIL"
TBWWWEMAIL="`echo $TBWWWEMAIL | sed -e 's/@/\\\@/'`"
TBAPPROVALEMAIL_NOSLASH="$TBAPPROVALEMAIL"
TBAPPROVALEMAIL="`echo $TBAPPROVALEMAIL | sed -e 's/@/\\\@/'`"
783 784 785 786
TBSTATEDEMAIL_NOSLASH="$TBSTATEDEMAIL_NOSLASH"
TBSTATEDEMAIL="`echo $TBSTATEDEMAIL | sed -e 's/@/\\\@/'`"
TBTESTSUITEEMAIL_NOSLASH="$TBTESTSUITEEMAIL_NOSLASH"
TBTESTSUITEEMAIL="`echo $TBTESTSUITEEMAIL | sed -e 's/@/\\\@/'`"
787

788
if test -n "$TBAUTOMAILEMAIL"; then
789
    TBAUTOMAILEMAIL_NOSLASH="$TBAUTOMAILEMAIL"
790 791 792 793 794
    TBAUTOMAILEMAIL="`echo $TBAUTOMAILEMAIL | sed -e 's/@/\\\@/'`"
else
    TBAUTOMAILEMAIL_NOSLASH="$TBLOGSEMAIL_NOSLASH"
    TBAUTOMAILEMAIL="$TBLOGSEMAIL"
fi
795
if test -n "$TBACTIVEARCHIVE"; then
796
    TBACTIVEARCHIVE_NOSLASH="$TBACTIVEARCHIVE"
797 798
    TBACTIVEARCHIVE="`echo $TBACTIVEARCHIVE | sed -e 's/@/\\\@/'`"
else
799
    TBACTIVEARCHIVE_NOSLASH="$TBOPSEMAIL_NOSLASH"
800 801 802
    TBACTIVEARCHIVE="$TBOPSEMAIL"
fi
if test -n "$TBUSERSARCHIVE"; then
803
    TBUSERSARCHIVE_NOSLASH="$TBUSERSARCHIVE"
804 805
    TBUSERSARCHIVE="`echo $TBUSERSARCHIVE | sed -e 's/@/\\\@/'`"
else
806
    TBUSERSARCHIVE_NOSLASH="$TBOPSEMAIL_NOSLASH"
807 808
    TBUSERSARCHIVE="$TBOPSEMAIL"
fi
Leigh B. Stoller's avatar
Leigh B. Stoller committed
809 810 811 812 813 814 815
if test -n "$TBERRORSEMAIL"; then
    TBERRORSEMAIL_NOSLASH="$TBERRORSEMAIL"
    TBERRORSEMAIL="`echo $TBERRORSEMAIL | sed -e 's/@/\\\@/'`"
else
    TBERRORSEMAIL_NOSLASH="$TBOPSEMAIL_NOSLASH"
    TBERRORSEMAIL="$TBOPSEMAIL"
fi
816 817 818
if test -n "$PROTOGENI_EMAIL"; then
    PROTOGENI_EMAIL="`echo $PROTOGENI_EMAIL | sed -e 's/@/\\\@/'`"
fi
819

820 821 822 823 824 825 826 827 828 829
# Default OURDOMAIN to the domain name of the boss node
# This is gross beyond all description - autoconf changes m4's quote characters
# to '[' and ']', which prevents them from working in the sed expression below.
# So, we temporarily change them to something else then change them back.
# Note: In newer versions of autoconf, this can be done with 'quadrigraphs'
changequote(START, END)dnl
if test -z "$OURDOMAIN"; then
    OURDOMAIN="`echo $BOSSNODE | sed -E -e 's/^[a-zA-Z0-9\-]+\.//'`"
fi
changequote([, ])dnl
830
AC_DEFINE_UNQUOTED(OURDOMAIN, "$OURDOMAIN", [Domain name of Emulab site])
831

832 833 834 835 836 837 838 839 840 841 842 843
if test -z "$EXTERNAL_TESTBED_NETWORK"; then
    EXTERNAL_TESTBED_NETWORK=$TESTBED_NETWORK
fi
if test -z "$EXTERNAL_TESTBED_NETMASK"; then
    EXTERNAL_TESTBED_NETMASK=$TESTBED_NETMASK
fi
if test -z "$EXTERNAL_BOSSNODE_IP"; then
    EXTERNAL_BOSSNODE_IP=$BOSSNODE_IP
fi
if test -z "$EXTERNAL_USERNODE_IP"; then
    EXTERNAL_USERNODE_IP=$USERNODE_IP
fi
844 845 846 847 848 849
if test -z "$FSNODE_IP"; then
    FSNODE_IP=$USERNODE_IP
fi
if test -z "$EXTERNAL_FSNODE_IP"; then
    EXTERNAL_FSNODE_IP=$FSNODE_IP
fi
850 851 852 853
if test -z "$TBAUTHDOMAIN"; then
    TBAUTHDOMAIN=".$OURDOMAIN"
fi
if test -z "$TBAUTHTIMEOUT"; then
854
    TBAUTHTIMEOUT="86400"
855 856 857 858 859 860 861 862 863 864 865 866 867
fi
if test -z "$WWW"; then
    WWW="$WWWHOST"
fi
if test -z "$TBBASE"; then
    TBBASE="https://$WWW"
fi
if test -z "$TBDOCBASE"; then
    TBDOCBASE="http://$WWW"
fi
if test -z "$TBWWW"; then
    TBWWW="<$TBBASE/>"
fi
868
AC_DEFINE_UNQUOTED(TBBASE, "$TBBASE", [Base URL for Emulab files])
869

870 871 872
if test -z "$THISHOMEBASE"; then
    THISHOMEBASE="Emulab.Net"
fi
873
if test -z "$EVENTSERVER"; then
874
    EVENTSERVER="event-server"
875
fi
876
AC_DEFINE_UNQUOTED(EVENTSERVER, "$EVENTSERVER", [Emulab event server node])
877
AC_DEFINE_UNQUOTED(BS_IQN_PREFIX, "$BS_IQN_PREFIX", [IQN prefix for blockstores])
878

879 880 881 882 883
#
# Perl SelfLoader
# XXX this is a hack which enables us to disable it on versions of perl
# where there are problems with taint checking in the SelfLoader module.
#
884
AC_DEFINE_UNQUOTED(SELFLOADER_DATA, "$SELFLOADER_DATA", [Need perl SelfLoader hack])
885

886 887 888
#
# LEDA library path
#
889
AC_ARG_WITH(LEDA,
890
[  --with-LEDA		Specify LEDA path (/usr/testbed default)],
891 892 893 894 895 896 897
[
    if test "$withval" = "yes"; then
        LEDA="$ac_default_prefix/LEDA/LEDA-4.0"
    else
        LEDA="$withval"
    fi
],[
898 899 900 901 902
    if test -d "$ac_default_prefix/LEDA/LEDA-4.0"; then
        LEDA="$ac_default_prefix/LEDA/LEDA-4.0"
    else
        LEDA=""
    fi
903 904 905
])
AC_SUBST(LEDA)

906 907 908
#
# Override LEDA with assign binary.
#
909 910
AC_ARG_WITH(assignbinary,
[  --with-assignbinary	Specify assign binary (overrides LEDA, default on)],
911 912 913 914 915 916 917 918 919
[
    if test "$withval" = "yes"; then
        ASSIGN="assign.bin"
        LEDA=""
    else
        ASSIGN="$withval"
        LEDA=""
    fi
],[
920 921 922 923 924
    if test "$LEDA" = ""; then
        ASSIGN="assign.bin"
    else
        ASSIGN=""
    fi
925 926 927
])
AC_SUBST(ASSIGN)

Robert Ricci's avatar
Robert Ricci committed
928 929 930
#
# Arguments to ssh to disable strict host key checking, etc
#
931
AC_ARG_WITH(ssh-args,
Robert Ricci's avatar
Robert Ricci committed
932 933 934 935
[  --with-ssh-args	Specify ssh arguments when running from testbed scripts ],
[
    SSH_ARGS="$withval"
],[
936
    SSH_ARGS="-q -o BatchMode=yes -o StrictHostKeyChecking=no"
Robert Ricci's avatar
Robert Ricci committed
937 938 939
])
AC_SUBST(SSH_ARGS)

940 941 942 943 944 945 946 947 948 949 950 951
#
# Path to install rc.d scripts in
#
AC_ARG_WITH(rcdir,
[  --with-rcdir		Specify path to install rc.d scripts (/usr/local/etc/rc.d default)],
[
    INSTALL_RCDIR="$with_rcdir"
],[
    INSTALL_RCDIR="/usr/local/etc/rc.d"
])
AC_SUBST(INSTALL_RCDIR)

952 953 954 955 956 957 958 959
#
# Path to install apache config files in
#
AC_ARG_WITH(apache-config-dir,
[  --with-apache-config	Specify path to install apache config files (/usr/local/etc/apache default)],
[
    INSTALL_APACHE_CONFIG="$withval"
],[
Leigh B Stoller's avatar
Leigh B Stoller committed
960
    foo=`/usr/local/sbin/httpd -V | grep SERVER_CONFIG_FILE | grep 'apache2'`
961 962 963
    if test "$foo" = ""; then
        INSTALL_APACHE_CONFIG="/usr/local/etc/apache"
	APACHE_VERSION="1.3"
964
	APACHE_START_COMMAND="/usr/local/etc/rc.d/apache.sh"
965
    else
966 967 968 969 970 971 972 973 974 975
        foo=`/usr/local/sbin/httpd -V | grep SERVER_CONFIG_FILE | grep 'apache24'`
	if test "$foo" = ""; then
	    INSTALL_APACHE_CONFIG="/usr/local/etc/apache22"
	    APACHE_VERSION="22"
	    APACHE_START_COMMAND="/usr/local/etc/rc.d/apache22"
	else
	    INSTALL_APACHE_CONFIG="/usr/local/etc/apache24"
	    APACHE_VERSION="24"
	    APACHE_START_COMMAND="/usr/local/etc/rc.d/apache24"
	fi
976
    fi
977 978
])
AC_SUBST(INSTALL_APACHE_CONFIG)
979
AC_SUBST(APACHE_VERSION)
980
AC_SUBST(APACHE_START_COMMAND)
981

982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997
#
# Path to garcia installation
#
AC_ARG_WITH(brainstem,
[  --with-brainstem=<DIR> Specify the path to the brainstem installation.],
[
    if test x"$withval" != x""; then
	BRAINSTEM_DIR="$withval"
    else
	AC_MSG_ERROR([You must specify a brainstem directory]);
    fi
],[
    BRAINSTEM_DIR=""
])
AC_SUBST(BRAINSTEM_DIR)

998

999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017
#
# Optionally build with optimization or aggressive non-optimization
# (Actually three options: on, off or default.)
#
AC_ARG_ENABLE(debug,
[  --enable-debug        Build with debug flags (-g -DDEBUG)
  --disable-debug       Build with optimization flags (-O2 -DNDEBUG -UDEBUG)])

if test "$enable_debug" = "yes"; then
	OPT_CFLAGS="-g -DDEBUG";
else
	if test "$enable_debug" = "no"; then
		OPT_CFLAGS="-O2 -DNDEBUG -UDEBUG";
	else
		OPT_CFLAGS="-g -O";
	fi
fi
AC_SUBST(OPT_CFLAGS)

1018
#
1019
# Disable event system. Relies on Elvin. On by default.
1020
#
1021
AC_ARG_ENABLE(events,
1022
[  --disable-events      Disable events (requires Elvin libraries)])
1023

1024 1025 1026 1027
if test "$enable_events" = "no"; then
	eventfiles="";
        EVENTSYS=0;
else
1028
	eventfiles="event/GNUmakefile clientside/lib/event/GNUmakefile \
1029
		    event/etc/elvind-boss.conf event/etc/elvind-ops.conf \
1030
		    event/etc/elvind-inetd.conf event/etc/GNUmakefile\
1031
		    event/sched/GNUmakefile \
Ryan Jackson's avatar
Ryan Jackson committed
1032
		    event/new_sched/GNUmakefile \
1033
                    event/example/GNUmakefile event/example/tbsend.pl \
1034
		    event/example/tbrecv.pl event/example/tbsend-short.pl \
1035
                    event/example/tbsend.py event/example/tbrecv.py \
1036
		    event/example/eventdebug.pl \
1037
		    event/proxy/GNUmakefile \
Gary Wong's avatar
Gary Wong committed
1038
		    event/monitoring/GNUmakefile \		    
1039
		    event/nsetrafgen/GNUmakefile \
1040
		    event/nsetrafgen/nseinput.tcl \
1041
		    event/nsetrafgen/nse-makepatch \
1042
		    event/stated/waitForState \
1043
		    event/stated/GNUmakefile event/stated/stated"
1044

1045
	optional_subdirs="$optional_subdirs event";
1046
        EVENTSYS=1;
1047
fi
1048