summaryrefslogtreecommitdiffstats
path: root/third_party/instrumented_libraries/scripts/build_and_package.sh
blob: 0de0c914dfebf74802e7148817bbb667e85240af (plain)
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
#!/bin/bash
# Copyright 2015 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

set -eu

supported_build_types="msan-no-origins msan-chained-origins"
supported_releases="precise trusty"
ubuntu_release=$(lsb_release -cs)

function show_help {
  echo "Usage: build_and_package.sh <build_type>"
  echo "Supported build types: all ${supported_build_types}"
}

function build_libraries {
  local build_type=$1
  case ${build_type} in
    "msan-chained-origins")
      local gyp_defines="msan=1 msan_track_origins=2"
      ;;
    "msan-no-origins")
      local gyp_defines="msan=1 msan_track_origins=0"
      ;;
    *)
      show_help
      exit 1
      ;;
  esac
  
  local archive_name=${build_type}-${ubuntu_release}
  local out_dir=out-${archive_name}

  echo "Building instrumented libraries in ${out_dir}..."

  rm -rf $out_dir
  mkdir $out_dir

  GYP_DEFINES="${gyp_defines} \
               use_instrumented_libraries=1 instrumented_libraries_jobs=8" \
  GYP_GENERATOR_FLAGS="output_dir=${out_dir}" \
  gclient runhooks

  ninja -j4 -C ${out_dir}/Release instrumented_libraries

  echo "Creating archive ${archive_name}.tgz..."

  files=$(ls -1 ${out_dir}/Release/instrumented_libraries)

  tar zcf ${archive_name}.tgz -C ${out_dir}/Release/instrumented_libraries \
      --exclude="?san/*.txt" ${files}

  echo To upload, run:
  echo upload_to_google_storage.py -b \
       chromium-instrumented-libraries ${archive_name}.tgz
  echo You should then commit the resulting .sha1 file.
}

if ! [[ "${supported_releases}" =~ ${ubuntu_release} ]]
then
  echo "Unsupported Ubuntu release: ${ubuntu_release}"
  echo "Supported releases: ${supported_releases}"
  exit 1
fi

if [ -z "${1-}" ]
then
  show_help
  exit 0
fi

if ! [[ "all ${supported_build_types}" =~ $1 ]]
then
  show_help
  exit 1
fi
if [ "$1" == "all" ]
then
  for build_type in ${supported_build_types}
  do
    build_libraries ${build_type}
  done
else
  build_libraries $1
fi