Skip to main content
aboutsummaryrefslogtreecommitdiffstats
blob: d8b29b4193d87fe5f92358d5ef00863e0bc47432 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#!/usr/bin/env bash
#*******************************************************************************
# Copyright (c) 2016 IBM Corporation and others.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
# which accompanies this distribution, and is available at
# https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#     David Williams - initial API and implementation
#*******************************************************************************

# version in master

# Utility script to get "ebuilder"
printf "\n\tDEBUG: %s\n" "executing ${0}"
printf "\t\t\t%s\n" "As called from ${FUNCNAME[1]}, called from line number ${BASH_LINENO[0]} in ${BASH_SOURCE[1]}."

export SCRIPT_PATH=${SCRIPT_PATH:-$(pwd)}
printf "\n\tINFO: %s\n" "SCRIPT_PATH: $SCRIPT_PATH"
source $SCRIPT_PATH/build-functions.shsource

BUILD_DIR=$1
EBUILDER_HASH=$2


if [[ -z "${BUILD_DIR}" ]]
then
  printf "\n\tWARNING: %s\n" "BUILD_DIR not defined, assuming $BUILD_DIR"
  BUILD_DIR=${PWD}
else
  # normally will exist by now, but if not, we'll create it.
  if [[ ! -d "${BUILD_DIR}" ]]
  then
    printf "\n\tWARNING: %s\n" "BUILD_DIR did not exist when expected. Creating $BUILD_DIR"
    mkdir -p $BUILD_DIR
  fi
fi

if [[ -z "${EBUILDER_HASH}" ]]
then
  echo "EBUILDER HASH, BRANCH, or TAG was not supplied, assuming 'master'"
  EBUILDER_HASH=master
fi

EBUILDER=eclipse.platform.releng.aggregator
# derived values
gitCache=$( fn-git-cache "$BUILD_ROOT")
aggDir=$( fn-git-dir "$gitCache" "$AGGREGATOR_REPO" )

RC=0

# don't clone, if already exists.
# TODO: could do more error checking, if hash is what we expect, 
# if the zip file already exists. But 99.99% sure all is fine, 
# if this directory already exists. Might be an issue in resuming 
# a failed build, without cleaning everything first? (Which we currently 
# do not do.) Even then, might be best to delete everything, including 
# the zip, and re-clone. It is, after all, a detached head.
if [[ ! -d ${BUILD_DIR}/${EBUILDER} ]]
then
  # Not sure 'REPO_AND_ACCESS' is defined in all possible scenarios, so we'll provide a default.
  # It is in main scenarios, but not sure about things like "re-running unit tests at a later time".
  # If directory doesn't exist yet, create it first, so we can assign proper access
  # permissions for later "clean up" routines.
  # Permissions not correct for this 'mkdir' so we will use same trick as in bootstrapVariables
  # see https://bugs.eclipse.org/bugs/show_bug.cgi?id=492493
  # mkdir -p "${BUILD_DIR}/${EBUILDER}"
  # chmod -c g+ws "${BUILD_DIR}/${EBUILDER}"
  # BUILD_DIR pretty much has to exist at this point, but in case not: 
  mkdir -p "${BUILD_DIR}"
  pushd "${BUILD_DIR}"
  mkdir "${EBUILDER}"
  popd
  
  # note the use of "reference" ... we typically only need a little bit of
  # new stuff, that the gitCache version doesn't have already, if any.
  echo "Doing git clone using:  --reference  \${aggDir} \${AGGREGATOR_REPO} \${BUILD_DIR}/\${EBUILDER}"
  echo "which evaluates to git clone  --reference  ${aggDir} ${AGGREGATOR_REPO} ${BUILD_DIR}/${EBUILDER}"
  git clone --reference  ${aggDir} ${AGGREGATOR_REPO} ${BUILD_DIR}/${EBUILDER}
  RC=$?
  if [[ $RC != 0 ]]
  then
    echo "[ERROR] Cloning EBUILDER returned non zero return code: $RC"
    exit $RC
  fi

  echo "INFO: ebuilder directory cloned."
  echo "INFO:    Location: ${BUILD_DIR}/${EBUILDER}"
  echo "INFO:    checking out specific HASH (which will make it detached)."
  pushd ${BUILD_DIR}/${EBUILDER}
  git checkout $EBUILDER_HASH
  RC=$?
  if [[ $RC != 0 ]]
  then
    echo "[ERROR] Checking out EBUILDER for $EBUILDER_HASH returned non zero return code: $RC"
    exit $RC
  fi
  popd

  # prepare a (small) zip, for easy retrieval of "production" files, during unit tests on Hudson.
  # This basic function used to be provided by CGit, but was turned off for "snapshots" of commits,
  # and was a bit overkill for those doing their own "remote" test builds (or tests).
  # This small zip is stored, unadvertised, on download site, and retrieved as part of the
  # Hudson test "bootstrap". The "production" directory in general, though, is also
  # used during the build itself.
  # (hard to know "where" we are at ... so we'll make sure.
  printf "\n\tDEBUG: %s\n" "About to create EBuilder zip: ${EBUILDER}-${EBUILDER_HASH}.zip"
  pushd ${buildDirectory}
  zip -r "${buildDirectory}/${EBUILDER}-${EBUILDER_HASH}.zip"  "${EBUILDER}/production/testScripts"
  popd
  exit $RC
fi

Back to the top