summaryrefslogtreecommitdiffstats
path: root/vespabase
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@yahoo-inc.com>2016-06-15 23:09:44 +0200
committerJon Bratseth <bratseth@yahoo-inc.com>2016-06-15 23:09:44 +0200
commit72231250ed81e10d66bfe70701e64fa5fe50f712 (patch)
tree2728bba1131a6f6e5bdf95afec7d7ff9358dac50 /vespabase
Publish
Diffstat (limited to 'vespabase')
-rw-r--r--vespabase/.gitignore1
-rw-r--r--vespabase/CMakeLists.txt37
-rw-r--r--vespabase/OWNERS2
-rw-r--r--vespabase/README2
-rw-r--r--vespabase/conf/services.conf6
-rw-r--r--vespabase/desc.services14
-rw-r--r--vespabase/desc.vespa_base37
-rw-r--r--vespabase/desc.vespa_base_dev40
-rw-r--r--vespabase/src/.gitignore2
-rw-r--r--vespabase/src/Defaults.pm59
-rwxr-xr-xvespabase/src/common-env.sh243
-rwxr-xr-xvespabase/src/defaultManifest.mf5
-rw-r--r--vespabase/src/project.properties45
-rwxr-xr-xvespabase/src/rhel-prestart.sh119
-rwxr-xr-xvespabase/src/start-cbinaries.sh255
-rwxr-xr-xvespabase/src/start-tool.sh65
-rwxr-xr-xvespabase/src/start-vespa-base.sh76
-rwxr-xr-xvespabase/src/stop-vespa-base.sh67
-rwxr-xr-xvespabase/src/vespa-allow-downgrade-from-6-to-5.sh8
-rwxr-xr-xvespabase/src/vespa-core-dumper.sh28
-rwxr-xr-xvespabase/src/vespa-start-configserver.sh73
-rwxr-xr-xvespabase/src/vespa-start-services.sh73
-rwxr-xr-xvespabase/src/vespa-stop-configserver.sh69
-rwxr-xr-xvespabase/src/vespa-stop-services.sh69
24 files changed, 1395 insertions, 0 deletions
diff --git a/vespabase/.gitignore b/vespabase/.gitignore
new file mode 100644
index 00000000000..f3c7a7c5da6
--- /dev/null
+++ b/vespabase/.gitignore
@@ -0,0 +1 @@
+Makefile
diff --git a/vespabase/CMakeLists.txt b/vespabase/CMakeLists.txt
new file mode 100644
index 00000000000..3519ad9274e
--- /dev/null
+++ b/vespabase/CMakeLists.txt
@@ -0,0 +1,37 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+vespa_install_script(src/start-cbinaries.sh getvespaconfig bin)
+vespa_install_script(src/start-cbinaries.sh vds-document-statistics bin)
+vespa_install_script(src/start-cbinaries.sh vdsgetclusterstate bin)
+vespa_install_script(src/start-cbinaries.sh vdsgetnodestate bin)
+vespa_install_script(src/start-cbinaries.sh vdsgetsystemstate bin)
+vespa_install_script(src/start-cbinaries.sh vdssetnodestate bin)
+vespa_install_script(src/start-cbinaries.sh vdsstat bin)
+vespa_install_script(src/start-cbinaries.sh verify_ranksetup bin)
+vespa_install_script(src/start-cbinaries.sh vespa-config-status bin)
+vespa_install_script(src/start-cbinaries.sh vespadoclocator bin)
+vespa_install_script(src/start-cbinaries.sh vespafeeder-old bin)
+vespa_install_script(src/start-cbinaries.sh vespaget bin)
+vespa_install_script(src/start-cbinaries.sh vespa-model-inspect bin)
+vespa_install_script(src/start-cbinaries.sh vespa-proton-cmd bin)
+vespa_install_script(src/start-cbinaries.sh vespa-query-profile-dump-tool bin)
+vespa_install_script(src/start-cbinaries.sh vesparoute bin)
+vespa_install_script(src/start-cbinaries.sh vespa-transactionlog-inspect bin)
+vespa_install_script(src/start-cbinaries.sh vespavisit bin)
+vespa_install_script(src/start-cbinaries.sh vespavisittarget bin)
+vespa_install_script(src/start-cbinaries.sh distributord sbin)
+vespa_install_script(src/start-cbinaries.sh fdispatch sbin)
+vespa_install_script(src/start-cbinaries.sh filedistributor sbin)
+vespa_install_script(src/start-cbinaries.sh proton sbin)
+vespa_install_script(src/start-cbinaries.sh storaged sbin)
+
+vespa_install_script(src/vespa-allow-downgrade-from-6-to-5.sh vespa-allow-downgrade-from-6-to-5 bin)
+vespa_install_script(src/start-tool.sh vespa-start-tool.sh bin)
+
+vespa_install_script(src/rhel-prestart.sh vespa-prestart.sh bin)
+vespa_install_script(src/common-env.sh common-env.sh libexec/vespa)
+vespa_install_script(src/start-vespa-base.sh start-vespa-base.sh libexec/vespa)
+vespa_install_script(src/stop-vespa-base.sh stop-vespa-base.sh libexec/vespa)
+vespa_install_script(src/vespa-start-configserver.sh vespa-start-configserver bin)
+vespa_install_script(src/vespa-start-services.sh vespa-start-services bin)
+vespa_install_script(src/vespa-stop-configserver.sh vespa-stop-configserver bin)
+vespa_install_script(src/vespa-stop-services.sh vespa-stop-services bin)
diff --git a/vespabase/OWNERS b/vespabase/OWNERS
new file mode 100644
index 00000000000..7028eebe31a
--- /dev/null
+++ b/vespabase/OWNERS
@@ -0,0 +1,2 @@
+musum
+arnej27959
diff --git a/vespabase/README b/vespabase/README
new file mode 100644
index 00000000000..c74c1ce385f
--- /dev/null
+++ b/vespabase/README
@@ -0,0 +1,2 @@
+This CVS module will hold some vespa-base related stuff,
+such as monitoring and startup scripts.
diff --git a/vespabase/conf/services.conf b/vespabase/conf/services.conf
new file mode 100644
index 00000000000..dd0988e185a
--- /dev/null
+++ b/vespabase/conf/services.conf
@@ -0,0 +1,6 @@
+#!/bin/sh
+cat <<END
+config_protocol_version_override ${services__config_protocol_version_override:-}
+addr_configserver ${services__addr_configserver:-}
+port_configserver_rpc ${services__port_configserver_rpc:-}
+END
diff --git a/vespabase/desc.services b/vespabase/desc.services
new file mode 100644
index 00000000000..b92af60e802
--- /dev/null
+++ b/vespabase/desc.services
@@ -0,0 +1,14 @@
+CloudConfig Runtime Environment
+
+The services package contains (via dependencies)
+common runtime cloudconfig components.
+
+The services package adds a set of environment settings that are used by several
+of the control scripts and binaries that use cloud config. The
+current list looks like this:
+
+# set port_configserver_rpc
+# set addr_configserver
+
+These values allow the other components to locate the configuration
+server, thus enabling them to get their config.
diff --git a/vespabase/desc.vespa_base b/vespabase/desc.vespa_base
new file mode 100644
index 00000000000..977ce987121
--- /dev/null
+++ b/vespabase/desc.vespa_base
@@ -0,0 +1,37 @@
+Vespa Runtime Environment
+
+The vespa_base package contains (via dependencies)
+common runtime Vespa components.
+
+Runtime libraries for c++ and java:
+
+ * vespa_gcc3 vespa_gcc_runtime: C++ runtime
+ * vespa_boost: Boost shared libraries for runtime use
+ * libiconv: Iconv shared library.
+
+General utilities:
+
+ * vespa_log: Vespa log handling utilities.
+ * vespa_gdb: A version of gdb that works with the Vespa compiler.
+ * ywget: Commandline URL-getter.
+
+Required services that will always be present on a vespa node:
+
+ * vespa_configd: The vespa service starter (config-sentinel).
+ * vespa_config_proxy: Local daemon for communication with the
+ configuration server.
+ * vespa_logd: Local daemon for forwarding the vespa.log to the
+ logserver.
+ * vespa_slobrok: Service Location Broker used by the messaging layer.
+
+Settings for the runtime environment
+
+Vespa Base adds a set of environment settings that are used by several
+of the control scripts and binaries that are part of Vespa. The
+current list looks like this:
+
+# set port_configserver_rpc
+# set addr_configserver
+
+These values allow the other components to locate the configuration
+server, thus enabling them to get their config.
diff --git a/vespabase/desc.vespa_base_dev b/vespabase/desc.vespa_base_dev
new file mode 100644
index 00000000000..908a76e50f3
--- /dev/null
+++ b/vespabase/desc.vespa_base_dev
@@ -0,0 +1,40 @@
+Vespa Developer libraries
+
+Vespa Base, in the package vespa_base_dev, contain a set of development
+libraries and utilities for use when developing you vespa service.
+The following is a short list.
+
+Vespa specific libraries:
+
+ * vespa_config_dev: config code generator and include-files and
+ libraries for the basic datatypes. Both for Java and C++.
+ * vespa_log and vespa_log_dev: Log-handling utilities, and log
+ libraries for Java and C++
+ * vespa_document_dev: C++ headers and static library, and Java
+ jar file, for working with Vespa document objects. This is the
+ basic element of the Vespa framework.
+ * vespa_slobrok and vespa_slobrok_dev: The actual Service
+ Location Broker component, as well as C++ headers and libraries
+ for being a slobrok client or server.
+
+Generic libraries:
+
+ * vespa_fastlib and vespa_fastlib_dev: Misc utilities library
+ containing unicode processing and an HTTP server, among other
+ things. Used by some Vespa components for legacy reasons.
+ * vespa_fastos_dev: OS abstraction layer and generic build
+ management utilities.
+ * vespa_fnet_dev: General purpose network library, with an RPC
+ layer. C/C++ headers and libraries.
+ * vespa_vespajlib_dev: Misc utility classes for Java.
+ * vespa_vespalib_dev: Misc utility classes for C++.
+
+Development tools and 3rd party libraries:
+
+ * vespa_gcc3 and vespa_gcc3_compiler: GCC 3 compiler and adapted
+ LinuxThreads library. This is the compiler to use for developing
+ Vespa components using these developer libraries.
+ * vespa_boost and vespa_boost_dev: Boost libraries and headers,
+ prepared for use with the Vespa compiler.
+ * vespa_cppunit_dev: Headers and libraries prepared with the
+ Vespa compiler.
diff --git a/vespabase/src/.gitignore b/vespabase/src/.gitignore
new file mode 100644
index 00000000000..a76bc1497b9
--- /dev/null
+++ b/vespabase/src/.gitignore
@@ -0,0 +1,2 @@
+build
+lib
diff --git a/vespabase/src/Defaults.pm b/vespabase/src/Defaults.pm
new file mode 100644
index 00000000000..48a3b4fdbbc
--- /dev/null
+++ b/vespabase/src/Defaults.pm
@@ -0,0 +1,59 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#
+# utility functions for reading and setting environment defaults
+
+package Yahoo::Vespa::Defaults;
+
+use strict;
+use warnings;
+use Carp ();
+
+BEGIN { # - Define exports from this module
+ use base 'Exporter';
+ our @EXPORT = qw(
+ considerFallback
+ readConfFile
+ );
+}
+
+return 1;
+
+########################## Default exported functions ########################
+
+sub considerFallback {
+ my ( $varname, $value ) = @_;
+ my $prevVal = $ENV{$varname};
+ if ( ! defined $value || $value eq '' ) {
+ # print STDERR " (debug) skipping empty value for $varname\n";
+ return;
+ }
+ if ( defined $prevVal && ! $prevVal eq '' ) {
+ # print STDERR " (debug) $varname already is '$prevVal', skipping new value '$value'\n";
+ return;
+ }
+ $ENV{$varname} = $value;
+}
+
+# Use this function to
+sub readConfFile {
+ my $vHome = $ENV{'VESPA_HOME'};
+ if ( $vHome eq "" || ! -d $vHome ) {
+ die "Bad or missing VESPA_HOME environment variable $vHome\n";
+ }
+ my $deffile = $vHome . '/conf/vespa/default-env.txt' ;
+ if ( -f $deffile ) {
+ open(DEFFILE, $deffile) or die "Cannot open '$deffile'\n";
+ while (<DEFFILE>) {
+ chomp;
+ my ( $action, $varname, $value ) = split(' ', $_, 3);
+ if ( $varname !~ m{^\w+$} ) {
+ # print STDERR "INVALID variable name '$varname' in $deffile, skipping\n";
+ next;
+ }
+ if ( $action eq 'fallback' ) {
+ considerFallback($varname, $value);
+ }
+ }
+ close(DEFFILE);
+ }
+}
diff --git a/vespabase/src/common-env.sh b/vespabase/src/common-env.sh
new file mode 100755
index 00000000000..cbc096dc1bf
--- /dev/null
+++ b/vespabase/src/common-env.sh
@@ -0,0 +1,243 @@
+#! /bin/bash
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+# common environment setup for vespa scripts
+
+# put these two lines in all scripts:
+# cd $VESPA_HOME || { echo "Cannot cd to $VESPA_HOME" 1>&2; exit 1; } # usually wanted
+# . $VESPA_HOME/libexec/vespa/common-env.sh || exit 1
+
+varhasvalue () {
+ # does the variable named in $1 have a (non-empty) value?
+ eval "oldvariablevalue=\${$1}"
+ [ "$oldvariablevalue" ]
+}
+
+varisempty () {
+ # is the variable named in $1 unset, or does it have an empty value?
+ eval "oldvariablevalue=\${$1}"
+ [ -z "$oldvariablevalue" ]
+}
+
+consider_fallback () {
+ if varhasvalue $1; then
+ : $1 already has value $oldvariablevalue
+ elif [ -z "${2}" ]; then
+ : proposed value "${2}" is empty
+ elif [ `expr match "$2" ".*'"` != 0 ]; then
+ : proposed value "${2}" contains a single-quote
+ else
+ eval "${1}='${2}'"
+ export ${1}
+ # echo "FALLBACK: ${1}='${2}'"
+ fi
+}
+
+read_conf_file () {
+ deffile="$VESPA_HOME/conf/vespa/default-env.txt"
+ if [ -f "${deffile}" ]; then
+ eval $(perl -ne '
+ chomp;
+ my ($action, $varname, $value) = split(" ", $_, 3);
+ $varname =~ s{[.]}{__}g;
+ if ($varname !~ m{^\w+}) {
+ # print STDERR "invalid var name $varname"
+ next;
+ }
+ if ($action eq "fallback" || $action eq "override") {
+ next if ($action eq "fallback" && $ENV{$varname} ne "");
+ # quote value
+ if ($value !~ m{^["][^"]*["]$} ) {
+ $value =~ s{(\W)}{\\$1}g;
+ }
+ print "$varname=$value; export $varname; "
+ }
+ if ($action eq "unset") {
+ print "export -n $varname; unset $varname; "
+ }
+ ' < $deffile)
+ fi
+}
+
+# Check if a variable is set. Plain environment precedes prefixed vars.
+get_var() {
+ arg=$1
+ ret_val=$2
+
+ env_var_name=`echo $arg | tr '[:lower:]' '[:upper:]'`
+ prefixed_var_name1=services__${arg}
+ prefixed_var_name2=vespa_base__${arg}
+
+ if varhasvalue $env_var_name ; then eval "ret_val=\${$env_var_name}"
+ elif varhasvalue $prefixed_var_name1 ; then eval "ret_val=\${$prefixed_var_name1}"
+ elif varhasvalue $prefixed_var_name2 ; then eval "ret_val=\${$prefixed_var_name2}"
+ fi
+ echo "$ret_val"
+}
+
+populate_environment () {
+ export VESPA_WEB_SERVICE_PORT=4080
+
+ # these are the variables we want while running vespa:
+ # VESPA_HOME - where is Vespa installed
+ # VESPA_CONFIGSERVERS - the host (or list of host) where a configserver runs
+ # VESPA_CONFIG_SOURCES - possible override as the first place to get config
+
+ # network settings
+ # VESPA_PORT_BASE - the start of the port range where vespa services should listen
+ # VESPA_CONFIGSERVER_RPC_PORT - the RPC port for configservers
+ # VESPA_CONFIGSERVER_HTTP_PORT - the webservice (REST api) port for configservers
+ # VESPA_CONFIG_PROTOCOL_VERSION - the RPC protocol version to use
+
+ # debugging
+ # VESPA_VALGRIND_OPT - for memory leak tracking, the options to use for valgrind
+ # VESPA_USE_VESPAMALLOC_D - use debugging version of malloc
+ # VESPA_USE_VESPAMALLOC_DST - use debugging and tracking version of malloc
+
+ # optimizations
+ # VESPA_USE_HUGEPAGES_LIST - list of programs that should use huge pages or memory
+ # VESPA_USE_MADVISE_LIST - list of programs that should use madvise()
+ # VESPA_USE_VESPAMALLOC - list of programs that should preload an optimized malloc
+ # VESPA_USE_NO_VESPAMALLOC - list of programs that should use normal system malloc
+
+ read_conf_file
+ consider_fallback ROOT ${VESPA_HOME}
+}
+
+populate_environment
+
+PATH=$VESPA_HOME/bin64:$VESPA_HOME/bin:/usr/local/bin:/usr/X11R6/bin:/sbin:/bin:/usr/sbin:/usr/bin
+export LD_LIBRARY_PATH=$VESPA_HOME/lib64
+
+# how to find the "java" program?
+# should be available in $VESPA_HOME/bin or JAVA_HOME
+if [ "$JAVA_HOME" ] && [ -f "${JAVA_HOME}/bin/java" ]; then
+ PATH="${PATH}:${JAVA_HOME}/bin"
+fi
+
+consider_fallback VESPA_VALGRIND_OPT "--num-callers=32 \
+--run-libc-freeres=yes \
+--track-origins=yes \
+--freelist-vol=1000000000 \
+--leak-check=full \
+--show-reachable=yes \
+--suppressions=${VESPA_HOME}etc/vespa/suppressions.txt"
+
+consider_fallback VESPA_USE_HUGEPAGES_LIST $(get_var "hugepages_list")
+consider_fallback VESPA_USE_HUGEPAGES_LIST "all"
+
+consider_fallback VESPA_USE_MADVISE_LIST $(get_var "madvise_list")
+
+consider_fallback VESPA_USE_VESPAMALLOC $(get_var "vespamalloc_list")
+consider_fallback VESPA_USE_VESPAMALLOC_D $(get_var "vespamallocd_list")
+consider_fallback VESPA_USE_VESPAMALLOC_DST $(get_var "vespamallocdst_list")
+consider_fallback VESPA_USE_NO_VESPAMALLOC $(get_var "no_vespamalloc_list")
+
+# TODO:
+# if [ "$VESPA_USE_HUGEPAGES_LIST" = "all" ]; then
+# # Can not enable this blindly as java will emit error if not available. THP must do then.
+# export VESPA_USE_HUGEPAGES="yes"
+# fi
+
+if [ -z "$YINST_RUNNING" ]; then
+ export VESPA_RUN_STANDALONE=true
+fi
+
+fixlimits () {
+ # number of open files:
+ if varhasvalue file_descriptor_limit; then
+ ulimit -n ${file_descriptor_limit} || exit 1
+ elif [ `ulimit -n` -lt 16384 ]; then
+ ulimit -n 16384 || exit 1
+ fi
+ ulimit -c unlimited # core file size
+ ulimit -u 409600 # number of processes/threads
+}
+
+checkjava () {
+ if java -version 2>&1 | grep "Java HotSpot.* 64-Bit Server VM" >/dev/null ; then
+ : OK
+ else
+ echo
+ echo "java must invoke the 64-bit Sun Java VM"
+ echo "Got:"
+ java -version
+ echo "Path: $PATH"
+ echo
+ exit 1
+ fi
+}
+
+runvalidation() {
+ run=$vespa_base__validationscript
+ if [ "$run" ]; then
+ if [ -x "$run" ]; then
+ if $run ; then
+ : OK
+ else
+ echo "validation script '$run' failed"
+ exit 1
+ fi
+ else
+ echo "validation script '$run' must be executable"
+ exit 1
+ fi
+ else
+ : no validation script
+ fi
+}
+
+disable_vm_zone_reclaim_mode () {
+ # Should probably also be done on host.
+ dn=/proc/sys/vm/zone_reclaim_mode
+ if [ -w $dn ]; then
+ echo 0 > $dn
+ fi
+}
+
+drop_caches () {
+ dn=/proc/sys/vm/drop_caches
+ if [ -w $dn ]; then
+ echo 3 > $dn
+ fi
+}
+
+no_transparent_hugepages () {
+ # Should probably also be done on host.
+ dn=/sys/kernel/mm/redhat_transparent_hugepage
+ if [ -w $dn/enabled ]; then
+ echo always > $dn/enabled
+ fi
+ if [ -w $dn/defrag ]; then
+ echo never > $dn/defrag
+ fi
+ if [ -w $dn/khugepaged/defrag ]; then
+ echo yes > $dn/khugepaged/defrag
+ fi
+}
+
+use_configserver_if_needed () {
+ nvcs=$(perl $VESPA_HOME/libexec/vespa/vespa-config.pl -allconfigsources)
+ x="$VESPA_CONFIG_SOURCES"
+ if [ "$x" ]; then
+ export VESPA_CONFIG_SOURCES="$x,$nvcs"
+ else
+ export VESPA_CONFIG_SOURCES="$nvcs"
+ fi
+}
+
+getJavaOptionsIPV46() {
+ canon_ipv4=$(hostname | perl -pe 'chomp; ($_,$rest) = gethostbyname($_);')
+ if [ -z "${canon_ipv4}" ]; then
+ echo " -Djava.net.preferIPv6Addresses=true"
+ fi
+}
+
+log_debug_message () {
+ if [ -n "$YINST_RUNNING" ]; then
+ echo "debug $*" 1>&2
+ fi
+}
+
+log_warning_message () {
+ echo "warning $*" 1>&2
+}
diff --git a/vespabase/src/defaultManifest.mf b/vespabase/src/defaultManifest.mf
new file mode 100755
index 00000000000..3f9d742b657
--- /dev/null
+++ b/vespabase/src/defaultManifest.mf
@@ -0,0 +1,5 @@
+Manifest-Version: 1.0
+Project-name: @PROJECT_NAME@
+Version: @VERSION@
+Creation-time: @NOW@
+
diff --git a/vespabase/src/project.properties b/vespabase/src/project.properties
new file mode 100644
index 00000000000..8f70e96d96a
--- /dev/null
+++ b/vespabase/src/project.properties
@@ -0,0 +1,45 @@
+###################################################################
+# PROJECT DIRECTORY DEFINITIONS
+###################################################################
+#
+# This section defines the name and location of various directories
+# in the project.
+#
+###################################################################
+
+#------------------------------------------------------------------
+# PROJECT_DIR defines the root directory of the project. If the
+# value is set to the magic string "[DEFAULT]", the property will
+# be automatically set to be the current directory (pwd)
+#
+PROJECT_DIR=[DEFAULT]
+
+#------------------------------------------------------------------
+# PROJECT_NAME defines the name of the project. If the value is set
+# to the magic string "[DEFAULT]", the property will automatically
+# be set to be the name of the project directory.
+#
+PROJECT_NAME=vespabase
+
+#------------------------------------------------------------------
+# DIST_DIR location of distribution files
+#
+DIST_DIR=build
+
+###################################################################
+# VARIOUS PROJECT PROPS
+###################################################################
+
+#------------------------------------------------------------------
+# VERSION - the current major version of the project
+#
+VERSION=0.1
+#------------------------------------------------------------------
+# BUILD_XML defines the location of the ant target definition file
+#
+BUILD_XML=$PROJECT_DIR/build.xml
+
+#------------------------------------------------------------------
+# JAVA_HOME defines the location of the JDK
+#
+JAVA_HOME=[DEFAULT]
diff --git a/vespabase/src/rhel-prestart.sh b/vespabase/src/rhel-prestart.sh
new file mode 100755
index 00000000000..761fd6af334
--- /dev/null
+++ b/vespabase/src/rhel-prestart.sh
@@ -0,0 +1,119 @@
+#!/bin/sh
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+# BEGIN environment bootstrap section
+# Do not edit between here and END as this section should stay identical in all scripts
+
+findpath () {
+ myname=${0}
+ mypath=${myname%/*}
+ myname=${myname##*/}
+ if [ "$mypath" ] && [ -d "$mypath" ]; then
+ return
+ fi
+ mypath=$(pwd)
+ if [ -f "${mypath}/${myname}" ]; then
+ return
+ fi
+ echo "FATAL: Could not figure out the path where $myname lives from $0"
+ exit 1
+}
+
+COMMON_ENV=libexec/vespa/common-env.sh
+
+source_common_env () {
+ if [ "$VESPA_HOME" ] && [ -d "$VESPA_HOME" ]; then
+ # ensure it ends with "/" :
+ VESPA_HOME=${VESPA_HOME%/}/
+ export VESPA_HOME
+ common_env=$VESPA_HOME/$COMMON_ENV
+ if [ -f "$common_env" ]; then
+ . $common_env
+ return
+ fi
+ fi
+ return 1
+}
+
+findroot () {
+ source_common_env && return
+ if [ "$VESPA_HOME" ]; then
+ echo "FATAL: bad VESPA_HOME value '$VESPA_HOME'"
+ exit 1
+ fi
+ if [ "$ROOT" ] && [ -d "$ROOT" ]; then
+ VESPA_HOME="$ROOT"
+ source_common_env && return
+ fi
+ findpath
+ while [ "$mypath" ]; do
+ VESPA_HOME=${mypath}
+ source_common_env && return
+ mypath=${mypath%/*}
+ done
+ echo "FATAL: missing VESPA_HOME environment variable"
+ echo "Could not locate $COMMON_ENV anywhere"
+ exit 1
+}
+
+findroot
+
+# END environment bootstrap section
+
+[ "$VESPA_HOME" ] || { echo "Missing VESPA_HOME variable" 1>&2; exit 1; }
+
+cd $VESPA_HOME || { echo "Cannot cd to $VESPA_HOME" 1>&2; exit 1; }
+
+fixdir () {
+ if [ $# != 4 ]; then
+ echo "fixdir: Expected 4 params, got:" "$@"
+ exit 1
+ fi
+ mkdir -p "$4"
+ chown $1 "$4"
+ chgrp $2 "$4"
+ chmod $3 "$4"
+}
+
+# BEGIN directory fixups
+
+fixdir yahoo wheel 755 libdata/yell/exception
+fixdir yahoo wheel 775 libexec/vespa/modelplugins
+fixdir yahoo wheel 755 libexec/vespa/plugins/qrs
+fixdir root wheel 1777 logs
+fixdir yahoo wheel 1777 logs/vespa
+fixdir yahoo wheel 755 logs/vespa/qrs
+fixdir yahoo wheel 755 logs/vespa/search
+fixdir root wheel 1777 tmp
+fixdir yahoo wheel 1777 tmp/vespa
+fixdir yahoo wheel 755 var/cache/vespa/config
+fixdir yahoo wheel 1777 var/crash
+fixdir yahoo wheel 755 var/db/vespa
+fixdir yahoo wheel 755 var/db/vespa/config_server
+fixdir yahoo wheel 755 var/db/vespa/config_server/serverdb
+fixdir yahoo wheel 755 var/db/vespa/config_server/serverdb/applications
+fixdir yahoo wheel 755 var/db/vespa/config_server/serverdb/configs
+fixdir yahoo wheel 755 var/db/vespa/config_server/serverdb/configs/application
+fixdir yahoo wheel 755 var/db/vespa/index
+fixdir yahoo wheel 755 var/db/vespa/search
+fixdir yahoo wheel 755 var/db/vespa/logcontrol
+fixdir root wheel 1777 var/run
+
+chown -hR yahoo logs/vespa
+chown -hR yahoo var/db/vespa
+
+# END directory fixups
+
+# Delete temporary files created by storage when running.
+rm -f /home/y/tmp/hostinfo.*.*.report
+
+# Add $VESPA_HOME/bin to default path
+perl -pi -e 'm=^pathmunge /usr/X11R6/bin after= and s=^=pathmunge /home/y/bin after; =' /etc/profile
+
+#Enable core files by default
+perl -pi -e 's/^# No core files by default/# Vespa: Enable core files by default/' /etc/profile
+perl -pi -e 's/^ulimit -S -c 0/ulimit -S -c unlimited/' /etc/profile
+
+# Don't fail script if this command fails.
+# * sysctl will always return error on openvz jails
+sysctl kernel.core_pattern="|/home/y/bin/vespa-core-dumper /home/y/bin64/lz4 /home/y/var/crash/%e.core.%p.lz4" || true
diff --git a/vespabase/src/start-cbinaries.sh b/vespabase/src/start-cbinaries.sh
new file mode 100755
index 00000000000..27a2b2cf4ae
--- /dev/null
+++ b/vespabase/src/start-cbinaries.sh
@@ -0,0 +1,255 @@
+#!/bin/sh
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+# BEGIN environment bootstrap section
+# Do not edit between here and END as this section should stay identical in all scripts
+
+findpath () {
+ myname=${0}
+ mypath=${myname%/*}
+ myname=${myname##*/}
+ if [ "$mypath" ] && [ -d "$mypath" ]; then
+ return
+ fi
+ mypath=$(pwd)
+ if [ -f "${mypath}/${myname}" ]; then
+ return
+ fi
+ echo "FATAL: Could not figure out the path where $myname lives from $0"
+ exit 1
+}
+
+COMMON_ENV=libexec/vespa/common-env.sh
+
+source_common_env () {
+ if [ "$VESPA_HOME" ] && [ -d "$VESPA_HOME" ]; then
+ # ensure it ends with "/" :
+ VESPA_HOME=${VESPA_HOME%/}/
+ export VESPA_HOME
+ common_env=$VESPA_HOME/$COMMON_ENV
+ if [ -f "$common_env" ]; then
+ . $common_env
+ return
+ fi
+ fi
+ return 1
+}
+
+findroot () {
+ source_common_env && return
+ if [ "$VESPA_HOME" ]; then
+ echo "FATAL: bad VESPA_HOME value '$VESPA_HOME'"
+ exit 1
+ fi
+ if [ "$ROOT" ] && [ -d "$ROOT" ]; then
+ VESPA_HOME="$ROOT"
+ source_common_env && return
+ fi
+ findpath
+ while [ "$mypath" ]; do
+ VESPA_HOME=${mypath}
+ source_common_env && return
+ mypath=${mypath%/*}
+ done
+ echo "FATAL: missing VESPA_HOME environment variable"
+ echo "Could not locate $COMMON_ENV anywhere"
+ exit 1
+}
+
+findroot
+
+# END environment bootstrap section
+
+bname=`basename $0`
+no_valgrind=true
+use_callgrind=false
+
+if [ "$bname" = "storaged" ] || [ "$bname" = "distributord" ]; then
+ memorySize=${vespa_storageserver__virtual_memory_size}
+ if [ "$memorySize" ]; then
+ log_debug_message "vespa_storageserver.virtual_memory_size set to $memorySize, running: ulimit -v $memorySize"
+ ulimit -v $memorySize
+ fi
+fi
+
+if [ "$bname" = "filedistributor" ]; then
+ VESPA_USE_VALGRIND=""
+ VESPA_VALGRIND_OPT=""
+fi
+
+if [ "$bname" = "vespafeeder-old" ] || [ "$bname" = "vdsfeeder" ]; then
+ export VESPA_LOG_LEVEL="all -spam -debug -config -info -event"
+fi
+
+case $VESPA_VALGRIND_OPT in
+ *callgrind*) use_callgrind=true;;
+esac
+
+for f in $VESPA_USE_VALGRIND
+do
+ # log_debug_message "Testing '$f'"
+ if [ "$f" = "$bname" ]; then
+ # log_debug_message "I ($bname) shall use valgrind, as set in VESPA_USE_VALGRIND"
+ no_valgrind=false
+ break
+ fi
+done
+
+if [ "$VESPA_USE_VALGRIND" = "all" ]; then
+ # log_debug_message "I shall use valgrind, as VESPA_USE_VALGRIND is 'all'"
+ no_valgrind=false
+fi
+
+# special malloc setup; we should make some better mechanism for this
+#
+export GLIBCXX_FORCE_NEW=1
+#
+unset LD_PRELOAD
+p64=/home/y/lib64
+p32=/home/y/lib32
+pre=/home/y/lib
+suf=vespa/malloc/libvespamalloc.so
+#
+# should really check that format is same as binary below
+#
+for f in $VESPA_USE_HUGEPAGES_LIST
+do
+ # log_debug_message "Testing '$f'"
+ if [ "$f" = "$bname" ]; then
+ # log_debug_message "I ($bname) shall use huge pages, as set in VESPA_USE_HUGEPAGES_LIST"
+ export VESPA_USE_HUGEPAGES="yes"
+ break
+ fi
+done
+
+if [ "$VESPA_USE_HUGEPAGES_LIST" = "all" ]; then
+ # log_debug_message "I shall use huge pages, as VESPA_USE_HUGEPAGES_LIST is 'all'"
+ export VESPA_USE_HUGEPAGES="yes"
+fi
+
+for f in $VESPA_USE_MADVISE_LIST
+do
+ # log_debug_message "Testing '$f'"
+ app=`echo $f | cut -d '=' -f1`
+ limit=`echo $f | cut -d '=' -f2`
+ if [ "$app" = "$bname" ]; then
+ log_debug_message "I ($bname) shall use madvise with limit $limit, as set in VESPA_USE_MADVISE_LIST"
+ export VESPA_MALLOC_MADVISE_LIMIT="$limit"
+ break
+ fi
+
+ if [ "$app" = "all" ]; then
+ log_debug_message "I shall use madvise with limit $limit, as VESPA_USE_MADVISE_LIST is 'all'"
+ export VESPA_MALLOC_MADVISE_LIMIT="$limit"
+ fi
+done
+
+for f in $VESPA_USE_NO_VESPAMALLOC
+do
+ # log_debug_message "Testing '$f'"
+ if [ "$f" = "$bname" ]; then
+ # log_debug_message "I ($bname) shall not use vespamalloc, as set in VESPA_USE_NO_VESPAMALLOC"
+ suf=vespa/malloc/libvespamalloc_notexisting.so
+ break
+ fi
+done
+
+if [ "$VESPA_USE_NO_VESPAMALLOC" = "all" ]; then
+ # log_debug_message "I shall not use, as VESPA_USE_NO_VESPAMALLOC is 'all'"
+ suf=vespa/malloc/libvespamalloc_notexisting.so
+fi
+
+for f in $VESPA_USE_VESPAMALLOC
+do
+ # log_debug_message "Testing '$f'"
+ if [ "$f" = "$bname" ]; then
+ # log_debug_message "I ($bname) shall use libvespamalloc, as set in VESPA_USE_VESPAMALLOC"
+ suf=vespa/malloc/libvespamalloc.so
+ break
+ fi
+done
+
+if [ "$VESPA_USE_VESPAMALLOC" = "all" ]; then
+ # log_debug_message "I shall use libvespamalloc, as VESPA_USE_VESPAMALLOC is 'all'"
+ suf=vespa/malloc/libvespamalloc.so
+fi
+
+for f in $VESPA_USE_VESPAMALLOC_D
+do
+ # log_debug_message "Testing '$f'"
+ if [ "$f" = "$bname" ]; then
+ # log_debug_message "I ($bname) shall use libvespamallocd, as set in VESPA_USE_VESPAMALLOC_D"
+ suf=vespa/malloc/libvespamallocd.so
+ break
+ fi
+done
+
+if [ "$VESPA_USE_VESPAMALLOC_D" = "all" ]; then
+ # log_debug_message "I shall use libvespamallocd, as VESPA_USE_VESPAMALLOC_D is 'all'"
+ suf=vespa/malloc/libvespamallocd.so
+fi
+
+for f in $VESPA_USE_VESPAMALLOC_DST
+do
+ # log_debug_message "Testing '$f'"
+ if [ "$f" = "$bname" ]; then
+ # log_debug_message "I ($bname) shall use libvespamallocdst16, as set in VESPA_USE_VESPAMALLOC_DST"
+ suf=vespa/malloc/libvespamallocdst16.so
+ break
+ fi
+done
+
+if [ "$VESPA_USE_VESPAMALLOC_DST" = "all" ]; then
+ # log_debug_message "I shall use libvespamallocdst16, as VESPA_USE_VESPAMALLOC_DST is 'all'"
+ suf=vespa/malloc/libvespamallocdst16.so
+fi
+
+if [[ ($no_valgrind || $use_callgrind) && -z $VESPA_RUN_STANDALONE ]]; then
+ for tryfile in $p64/$suf $p32/$suf $pre/$suf ; do
+ if [ -f $tryfile ]; then
+ LD_PRELOAD=$tryfile
+ log_debug_message "Using LD_PRELOAD=$tryfile"
+ if [ "$VESPA_USE_HUGEPAGES" ]; then
+ export VESPA_MALLOC_HUGEPAGES="$VESPA_USE_HUGEPAGES"
+ log_debug_message "enabling hugepages for '$0-bin'."
+ fi
+ break
+ fi
+ done
+fi
+
+# log_debug_message "VESPA_USE_VALGRIND='$VESPA_USE_VALGRIND'; bname='$bname'; no_valgrind='$no_valgrind'"
+
+if $no_valgrind || ! which valgrind >/dev/null ; then
+ # log_debug_message $0-bin $@
+ if [ -z $VESPA_RUN_STANDALONE ]; then
+ ulimit -c unlimited
+ fi
+ if numactl --interleave all true &> /dev/null; then
+ # We are allowed to use numactl
+ if [ "$VESPA_AFFINITY_CPU_SOCKET" ]; then
+ numcpu=`numactl --hardware | grep available | cut -d' ' -f2`
+ node=$(($VESPA_AFFINITY_CPU_SOCKET % $numcpu))
+ log_debug_message "Starting $0 with affinity on cpu $VESPA_AFFINITY_CPU_SOCKET out of $numcpu : " \
+ numactl --cpunodebind=$node --membind=$node env LD_PRELOAD=$LD_PRELOAD $0-bin "$@"
+ exec numactl --cpunodebind=$node --membind=$node env LD_PRELOAD=$LD_PRELOAD $0-bin "$@"
+ else
+ log_debug_message "Starting $0 with memory interleaving on all nodes : " \
+ numactl --interleave all env LD_PRELOAD=$LD_PRELOAD $0-bin "$@"
+ exec numactl --interleave all env LD_PRELOAD=$LD_PRELOAD $0-bin "$@"
+ fi
+ else
+ log_debug_message "Starting $0 without numactl (no permission or not available) : " \
+ env LD_PRELOAD=$LD_PRELOAD $0-bin "$@"
+ exec env LD_PRELOAD=$LD_PRELOAD $0-bin "$@"
+ fi
+else
+ if $use_callgrind ; then
+ export LD_PRELOAD
+ else
+ export LD_PRELOAD=""
+ fi
+ log_debug_message "Starting : " \
+ valgrind $VESPA_VALGRIND_OPT --log-file=/home/y/tmp/valgrind.$bname.log.$$ $0-bin "$@"
+ exec valgrind $VESPA_VALGRIND_OPT --log-file=/home/y/tmp/valgrind.$bname.log.$$ $0-bin "$@"
+fi
diff --git a/vespabase/src/start-tool.sh b/vespabase/src/start-tool.sh
new file mode 100755
index 00000000000..73ec408ad7d
--- /dev/null
+++ b/vespabase/src/start-tool.sh
@@ -0,0 +1,65 @@
+#!/bin/sh
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+# BEGIN environment bootstrap section
+# Do not edit between here and END as this section should stay identical in all scripts
+
+findpath () {
+ myname=${0}
+ mypath=${myname%/*}
+ myname=${myname##*/}
+ if [ "$mypath" ] && [ -d "$mypath" ]; then
+ return
+ fi
+ mypath=$(pwd)
+ if [ -f "${mypath}/${myname}" ]; then
+ return
+ fi
+ echo "FATAL: Could not figure out the path where $myname lives from $0"
+ exit 1
+}
+
+COMMON_ENV=libexec/vespa/common-env.sh
+
+source_common_env () {
+ if [ "$VESPA_HOME" ] && [ -d "$VESPA_HOME" ]; then
+ # ensure it ends with "/" :
+ VESPA_HOME=${VESPA_HOME%/}/
+ export VESPA_HOME
+ common_env=$VESPA_HOME/$COMMON_ENV
+ if [ -f "$common_env" ]; then
+ . $common_env
+ return
+ fi
+ fi
+ return 1
+}
+
+findroot () {
+ source_common_env && return
+ if [ "$VESPA_HOME" ]; then
+ echo "FATAL: bad VESPA_HOME value '$VESPA_HOME'"
+ exit 1
+ fi
+ if [ "$ROOT" ] && [ -d "$ROOT" ]; then
+ VESPA_HOME="$ROOT"
+ source_common_env && return
+ fi
+ findpath
+ while [ "$mypath" ]; do
+ VESPA_HOME=${mypath}
+ source_common_env && return
+ mypath=${mypath%/*}
+ done
+ echo "FATAL: missing VESPA_HOME environment variable"
+ echo "Could not locate $COMMON_ENV anywhere"
+ exit 1
+}
+
+findroot
+
+# END environment bootstrap section
+
+use_configserver_if_needed
+
+exec $0-bin "$@"
diff --git a/vespabase/src/start-vespa-base.sh b/vespabase/src/start-vespa-base.sh
new file mode 100755
index 00000000000..ad6b58f61b1
--- /dev/null
+++ b/vespabase/src/start-vespa-base.sh
@@ -0,0 +1,76 @@
+#!/bin/sh
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+# BEGIN environment bootstrap section
+# Do not edit between here and END as this section should stay identical in all scripts
+
+findpath () {
+ myname=${0}
+ mypath=${myname%/*}
+ myname=${myname##*/}
+ if [ "$mypath" ] && [ -d "$mypath" ]; then
+ return
+ fi
+ mypath=$(pwd)
+ if [ -f "${mypath}/${myname}" ]; then
+ return
+ fi
+ echo "FATAL: Could not figure out the path where $myname lives from $0"
+ exit 1
+}
+
+COMMON_ENV=libexec/vespa/common-env.sh
+
+source_common_env () {
+ if [ "$VESPA_HOME" ] && [ -d "$VESPA_HOME" ]; then
+ # ensure it ends with "/" :
+ VESPA_HOME=${VESPA_HOME%/}/
+ export VESPA_HOME
+ common_env=$VESPA_HOME/$COMMON_ENV
+ if [ -f "$common_env" ]; then
+ . $common_env
+ return
+ fi
+ fi
+ return 1
+}
+
+findroot () {
+ source_common_env && return
+ if [ "$VESPA_HOME" ]; then
+ echo "FATAL: bad VESPA_HOME value '$VESPA_HOME'"
+ exit 1
+ fi
+ if [ "$ROOT" ] && [ -d "$ROOT" ]; then
+ VESPA_HOME="$ROOT"
+ source_common_env && return
+ fi
+ findpath
+ while [ "$mypath" ]; do
+ VESPA_HOME=${mypath}
+ source_common_env && return
+ mypath=${mypath%/*}
+ done
+ echo "FATAL: missing VESPA_HOME environment variable"
+ echo "Could not locate $COMMON_ENV anywhere"
+ exit 1
+}
+
+findroot
+
+# END environment bootstrap section
+
+cd $VESPA_HOME || { echo "Cannot cd to $VESPA_HOME" 1>&2; exit 1; }
+
+fixlimits
+checkjava
+runvalidation
+no_transparent_hugepages
+disable_vm_zone_reclaim_mode
+drop_caches
+
+if [ -f /tmp/.ylock-arena.shm ]; then
+ chown yahoo:wheel /tmp/.ylock-arena.shm
+fi
+
+exec run-as-yahoo ${VESPA_HOME}/bin/config-ctl start
diff --git a/vespabase/src/stop-vespa-base.sh b/vespabase/src/stop-vespa-base.sh
new file mode 100755
index 00000000000..6e2fccc5664
--- /dev/null
+++ b/vespabase/src/stop-vespa-base.sh
@@ -0,0 +1,67 @@
+#!/bin/sh
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+# BEGIN environment bootstrap section
+# Do not edit between here and END as this section should stay identical in all scripts
+
+findpath () {
+ myname=${0}
+ mypath=${myname%/*}
+ myname=${myname##*/}
+ if [ "$mypath" ] && [ -d "$mypath" ]; then
+ return
+ fi
+ mypath=$(pwd)
+ if [ -f "${mypath}/${myname}" ]; then
+ return
+ fi
+ echo "FATAL: Could not figure out the path where $myname lives from $0"
+ exit 1
+}
+
+COMMON_ENV=libexec/vespa/common-env.sh
+
+source_common_env () {
+ if [ "$VESPA_HOME" ] && [ -d "$VESPA_HOME" ]; then
+ # ensure it ends with "/" :
+ VESPA_HOME=${VESPA_HOME%/}/
+ export VESPA_HOME
+ common_env=$VESPA_HOME/$COMMON_ENV
+ if [ -f "$common_env" ]; then
+ . $common_env
+ return
+ fi
+ fi
+ return 1
+}
+
+findroot () {
+ source_common_env && return
+ if [ "$VESPA_HOME" ]; then
+ echo "FATAL: bad VESPA_HOME value '$VESPA_HOME'"
+ exit 1
+ fi
+ if [ "$ROOT" ] && [ -d "$ROOT" ]; then
+ VESPA_HOME="$ROOT"
+ source_common_env && return
+ fi
+ findpath
+ while [ "$mypath" ]; do
+ VESPA_HOME=${mypath}
+ source_common_env && return
+ mypath=${mypath%/*}
+ done
+ echo "FATAL: missing VESPA_HOME environment variable"
+ echo "Could not locate $COMMON_ENV anywhere"
+ exit 1
+}
+
+findroot
+
+# END environment bootstrap section
+
+cd ${VESPA_HOME} || { echo "Cannot cd to ${VESPA_HOME}" 1>&2; exit 1; }
+
+fixlimits
+
+exec run-as-yahoo ${VESPA_HOME}/bin/config-ctl stop
diff --git a/vespabase/src/vespa-allow-downgrade-from-6-to-5.sh b/vespabase/src/vespa-allow-downgrade-from-6-to-5.sh
new file mode 100755
index 00000000000..c01333bdd79
--- /dev/null
+++ b/vespabase/src/vespa-allow-downgrade-from-6-to-5.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+for f in /home/y/var/db/vespa/search/*/*/documents/*/config/config-*
+do
+ echo $f
+ touch $f/smartsummary.cfg
+done
diff --git a/vespabase/src/vespa-core-dumper.sh b/vespabase/src/vespa-core-dumper.sh
new file mode 100755
index 00000000000..5f9baadf4fc
--- /dev/null
+++ b/vespabase/src/vespa-core-dumper.sh
@@ -0,0 +1,28 @@
+#!/bin/bash
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+log_message () {
+ echo "warning $*" | logger -t vespa-core-dumper
+}
+
+compressor=$1
+corefile=$2
+option=$3
+
+log_message "Starting $compressor > $corefile"
+
+
+if [ -f "$corefile" ]
+then
+ if [ "$option" != "overwrite" ]
+ then
+ log_message "$corefile is read-only. Core is not dumped."
+ exit 1
+ else
+ log_message "Overwriting $corefile"
+ fi
+fi
+
+$compressor > $corefile
+chmod 444 $corefile
+log_message "Finished $compressor > $corefile"
diff --git a/vespabase/src/vespa-start-configserver.sh b/vespabase/src/vespa-start-configserver.sh
new file mode 100755
index 00000000000..1af506d7db1
--- /dev/null
+++ b/vespabase/src/vespa-start-configserver.sh
@@ -0,0 +1,73 @@
+#!/bin/sh
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+# BEGIN environment bootstrap section
+# Do not edit between here and END as this section should stay identical in all scripts
+
+findpath () {
+ myname=${0}
+ mypath=${myname%/*}
+ myname=${myname##*/}
+ if [ "$mypath" ] && [ -d "$mypath" ]; then
+ return
+ fi
+ mypath=$(pwd)
+ if [ -f "${mypath}/${myname}" ]; then
+ return
+ fi
+ echo "FATAL: Could not figure out the path where $myname lives from $0"
+ exit 1
+}
+
+COMMON_ENV=libexec/vespa/common-env.sh
+
+source_common_env () {
+ if [ "$VESPA_HOME" ] && [ -d "$VESPA_HOME" ]; then
+ # ensure it ends with "/" :
+ VESPA_HOME=${VESPA_HOME%/}/
+ export VESPA_HOME
+ common_env=$VESPA_HOME/$COMMON_ENV
+ if [ -f "$common_env" ]; then
+ . $common_env
+ return
+ fi
+ fi
+ return 1
+}
+
+findroot () {
+ source_common_env && return
+ if [ "$VESPA_HOME" ]; then
+ echo "FATAL: bad VESPA_HOME value '$VESPA_HOME'"
+ exit 1
+ fi
+ if [ "$ROOT" ] && [ -d "$ROOT" ]; then
+ VESPA_HOME="$ROOT"
+ source_common_env && return
+ fi
+ findpath
+ while [ "$mypath" ]; do
+ VESPA_HOME=${mypath}
+ source_common_env && return
+ mypath=${mypath%/*}
+ done
+ echo "FATAL: missing VESPA_HOME environment variable"
+ echo "Could not locate $COMMON_ENV anywhere"
+ exit 1
+}
+
+findroot
+
+# END environment bootstrap section
+
+${VESPA_HOME}bin/vespa-prestart.sh || exit 1
+willrun=${VESPA_HOME}libexec/vespa/start-configserver
+if [ -x $willrun ]; then
+ echo "Starting $willrun as a background process." >&2
+ exec </dev/null
+ exec >/dev/null 2>&1
+ nohup $willrun &
+ exit 0
+fi
+echo "FATAL cannot run: $willrun"
+exit 1
diff --git a/vespabase/src/vespa-start-services.sh b/vespabase/src/vespa-start-services.sh
new file mode 100755
index 00000000000..f2a043247b4
--- /dev/null
+++ b/vespabase/src/vespa-start-services.sh
@@ -0,0 +1,73 @@
+#!/bin/sh
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+# BEGIN environment bootstrap section
+# Do not edit between here and END as this section should stay identical in all scripts
+
+findpath () {
+ myname=${0}
+ mypath=${myname%/*}
+ myname=${myname##*/}
+ if [ "$mypath" ] && [ -d "$mypath" ]; then
+ return
+ fi
+ mypath=$(pwd)
+ if [ -f "${mypath}/${myname}" ]; then
+ return
+ fi
+ echo "FATAL: Could not figure out the path where $myname lives from $0"
+ exit 1
+}
+
+COMMON_ENV=libexec/vespa/common-env.sh
+
+source_common_env () {
+ if [ "$VESPA_HOME" ] && [ -d "$VESPA_HOME" ]; then
+ # ensure it ends with "/" :
+ VESPA_HOME=${VESPA_HOME%/}/
+ export VESPA_HOME
+ common_env=$VESPA_HOME/$COMMON_ENV
+ if [ -f "$common_env" ]; then
+ . $common_env
+ return
+ fi
+ fi
+ return 1
+}
+
+findroot () {
+ source_common_env && return
+ if [ "$VESPA_HOME" ]; then
+ echo "FATAL: bad VESPA_HOME value '$VESPA_HOME'"
+ exit 1
+ fi
+ if [ "$ROOT" ] && [ -d "$ROOT" ]; then
+ VESPA_HOME="$ROOT"
+ source_common_env && return
+ fi
+ findpath
+ while [ "$mypath" ]; do
+ VESPA_HOME=${mypath}
+ source_common_env && return
+ mypath=${mypath%/*}
+ done
+ echo "FATAL: missing VESPA_HOME environment variable"
+ echo "Could not locate $COMMON_ENV anywhere"
+ exit 1
+}
+
+findroot
+
+# END environment bootstrap section
+
+${VESPA_HOME}bin/vespa-prestart.sh || exit 1
+willrun=${VESPA_HOME}libexec/vespa/start-vespa-base.sh
+if [ -x $willrun ]; then
+ echo "Starting $willrun as a background process." >&2
+ exec </dev/null
+ exec >/dev/null 2>&1
+ nohup $willrun &
+ exit 0
+fi
+echo "FATAL cannot run: $willrun"
+exit 1
diff --git a/vespabase/src/vespa-stop-configserver.sh b/vespabase/src/vespa-stop-configserver.sh
new file mode 100755
index 00000000000..3face7ccbde
--- /dev/null
+++ b/vespabase/src/vespa-stop-configserver.sh
@@ -0,0 +1,69 @@
+#!/bin/sh
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+# BEGIN environment bootstrap section
+# Do not edit between here and END as this section should stay identical in all scripts
+
+findpath () {
+ myname=${0}
+ mypath=${myname%/*}
+ myname=${myname##*/}
+ if [ "$mypath" ] && [ -d "$mypath" ]; then
+ return
+ fi
+ mypath=$(pwd)
+ if [ -f "${mypath}/${myname}" ]; then
+ return
+ fi
+ echo "FATAL: Could not figure out the path where $myname lives from $0"
+ exit 1
+}
+
+COMMON_ENV=libexec/vespa/common-env.sh
+
+source_common_env () {
+ if [ "$VESPA_HOME" ] && [ -d "$VESPA_HOME" ]; then
+ # ensure it ends with "/" :
+ VESPA_HOME=${VESPA_HOME%/}/
+ export VESPA_HOME
+ common_env=$VESPA_HOME/$COMMON_ENV
+ if [ -f "$common_env" ]; then
+ . $common_env
+ return
+ fi
+ fi
+ return 1
+}
+
+findroot () {
+ source_common_env && return
+ if [ "$VESPA_HOME" ]; then
+ echo "FATAL: bad VESPA_HOME value '$VESPA_HOME'"
+ exit 1
+ fi
+ if [ "$ROOT" ] && [ -d "$ROOT" ]; then
+ VESPA_HOME="$ROOT"
+ source_common_env && return
+ fi
+ findpath
+ while [ "$mypath" ]; do
+ VESPA_HOME=${mypath}
+ source_common_env && return
+ mypath=${mypath%/*}
+ done
+ echo "FATAL: missing VESPA_HOME environment variable"
+ echo "Could not locate $COMMON_ENV anywhere"
+ exit 1
+}
+
+findroot
+
+# END environment bootstrap section
+
+willrun=${VESPA_HOME}libexec/vespa/stop-configserver
+if [ -x $willrun ]; then
+ echo "Executing $willrun" >&2
+ exec $willrun
+fi
+echo "FATAL cannot run: $willrun"
+exit 1
diff --git a/vespabase/src/vespa-stop-services.sh b/vespabase/src/vespa-stop-services.sh
new file mode 100755
index 00000000000..03250b61a88
--- /dev/null
+++ b/vespabase/src/vespa-stop-services.sh
@@ -0,0 +1,69 @@
+#!/bin/sh
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+# BEGIN environment bootstrap section
+# Do not edit between here and END as this section should stay identical in all scripts
+
+findpath () {
+ myname=${0}
+ mypath=${myname%/*}
+ myname=${myname##*/}
+ if [ "$mypath" ] && [ -d "$mypath" ]; then
+ return
+ fi
+ mypath=$(pwd)
+ if [ -f "${mypath}/${myname}" ]; then
+ return
+ fi
+ echo "FATAL: Could not figure out the path where $myname lives from $0"
+ exit 1
+}
+
+COMMON_ENV=libexec/vespa/common-env.sh
+
+source_common_env () {
+ if [ "$VESPA_HOME" ] && [ -d "$VESPA_HOME" ]; then
+ # ensure it ends with "/" :
+ VESPA_HOME=${VESPA_HOME%/}/
+ export VESPA_HOME
+ common_env=$VESPA_HOME/$COMMON_ENV
+ if [ -f "$common_env" ]; then
+ . $common_env
+ return
+ fi
+ fi
+ return 1
+}
+
+findroot () {
+ source_common_env && return
+ if [ "$VESPA_HOME" ]; then
+ echo "FATAL: bad VESPA_HOME value '$VESPA_HOME'"
+ exit 1
+ fi
+ if [ "$ROOT" ] && [ -d "$ROOT" ]; then
+ VESPA_HOME="$ROOT"
+ source_common_env && return
+ fi
+ findpath
+ while [ "$mypath" ]; do
+ VESPA_HOME=${mypath}
+ source_common_env && return
+ mypath=${mypath%/*}
+ done
+ echo "FATAL: missing VESPA_HOME environment variable"
+ echo "Could not locate $COMMON_ENV anywhere"
+ exit 1
+}
+
+findroot
+
+# END environment bootstrap section
+
+willrun=${VESPA_HOME}libexec/vespa/stop-vespa-base.sh
+if [ -x $willrun ]; then
+ echo "Executing $willrun" >&2
+ exec $willrun
+fi
+echo "FATAL cannot run: $willrun"
+exit 1