1*9c5db199SXin Li#!/bin/bash -e 2*9c5db199SXin Li# Copyright 2020 The Chromium OS Authors. All rights reserved. 3*9c5db199SXin Li# Use of this source code is governed by a BSD-style license that can be 4*9c5db199SXin Li# found in the LICENSE file. 5*9c5db199SXin Li 6*9c5db199SXin Li# Obtain the most recent proto descriptors from chromiumos/infra/proto protos. 7*9c5db199SXin Li# This is needed to work with these protos from *.star code. 8*9c5db199SXin Li 9*9c5db199SXin Liset -eu 10*9c5db199SXin Li 11*9c5db199SXin LiCROS_CONFIG_REPO="https://chromium.googlesource.com/chromiumos/config" 12*9c5db199SXin Li 13*9c5db199SXin LiCIPD_PROTOC_VERSION='v3.6.1' 14*9c5db199SXin LiCIPD_PROTOC_GEN_GO_VERSION='v1.3.2' 15*9c5db199SXin Li 16*9c5db199SXin Lireadonly script_dir="$(dirname "$(realpath -e "${BASH_SOURCE[0]}")")" 17*9c5db199SXin Lireadonly target="${script_dir}/proto/descpb.bin" 18*9c5db199SXin Li 19*9c5db199SXin Lireadonly work_dir=$(mktemp --tmpdir -d genprotodescXXXXXX) 20*9c5db199SXin Litrap "rm -rf ${work_dir}" EXIT 21*9c5db199SXin Liecho "Using temporary directory ${work_dir}" 22*9c5db199SXin Li 23*9c5db199SXin Liif [[ -n ${CHROMIUMOS_CONFIG_DIR+x} ]]; then 24*9c5db199SXin Li echo "CHROMIUMOS_CONFIG_DIR is set: " \ 25*9c5db199SXin Li "Copying sources from ${CHROMIUMOS_CONFIG_DIR}/" 26*9c5db199SXin Li cp -r "${CHROMIUMOS_CONFIG_DIR}/" "${work_dir}/config" 27*9c5db199SXin Lielse 28*9c5db199SXin Li echo "Creating a shallow clone of ${CROS_CONFIG_REPO}" 29*9c5db199SXin Li git clone -q --depth=1 --shallow-submodules "${CROS_CONFIG_REPO}" \ 30*9c5db199SXin Li "${work_dir}/config" 31*9c5db199SXin Lifi 32*9c5db199SXin Lireadonly cros_config_subdir="config/proto" 33*9c5db199SXin Li 34*9c5db199SXin Liecho "Grabbing protoc from CIPD" 35*9c5db199SXin Licipd_root=.cipd_bin 36*9c5db199SXin Licipd ensure \ 37*9c5db199SXin Li -log-level warning \ 38*9c5db199SXin Li -root "${cipd_root}" \ 39*9c5db199SXin Li -ensure-file - \ 40*9c5db199SXin Li <<ENSURE_FILE 41*9c5db199SXin Liinfra/tools/protoc/\${platform} protobuf_version:${CIPD_PROTOC_VERSION} 42*9c5db199SXin Lichromiumos/infra/tools/protoc-gen-go version:${CIPD_PROTOC_GEN_GO_VERSION} 43*9c5db199SXin LiENSURE_FILE 44*9c5db199SXin Li 45*9c5db199SXin Li# Need full path here for cipd as there is a cd to a different directory. 46*9c5db199SXin Liexport PATH="${script_dir}/${cipd_root}:${PATH}" 47*9c5db199SXin Li 48*9c5db199SXin Liecho "Generating protobuf descriptors" 49*9c5db199SXin Lireadonly all_protos=$( 50*9c5db199SXin Li cd "${work_dir}" && 51*9c5db199SXin Li find "${cros_config_subdir}" -name "*.proto" | sort 52*9c5db199SXin Li) 53*9c5db199SXin Li( 54*9c5db199SXin Li cd "${work_dir}" && 55*9c5db199SXin Li export LC_ALL=C # for stable sorting order 56*9c5db199SXin Li protoc -I"${cros_config_subdir}" \ 57*9c5db199SXin Li --descriptor_set_out=descpb.bin ${all_protos} 58*9c5db199SXin Li) 59*9c5db199SXin Li 60*9c5db199SXin Liecho "Copying generated descriptors" 61*9c5db199SXin Licp "${work_dir}/descpb.bin" "${target}" 62