blob: 9d266f980ea9f394892d83f8a0c3a75beed67502 [file] [log] [blame]
# Copyright 2015 The Native Client 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 -o errexit
set -o nounset
SCRIPT_DIR="$(cd $(dirname $0) && pwd)"
NACLPORTS_ROOT="$(cd ${SCRIPT_DIR}/.. && pwd)"
PKG=${NACLPORTS_ROOT}/out/build/pkg/build_host/src/pkg
SDK_VERSION=${SDK_VERSION:-pepper_48}
WriteMetaFile() {
echo "version = 1;" > $1
echo "packing_format = "tbz";" >> $1
echo "digest_format = "sha256_base32";" >> $1
echo "digests = "digests";" >> $1
echo "manifests = "packagesite.yaml";" >> $1
echo "filesite = "filesite.yaml";" >> $1
echo "digests_archive = "digests";" >> $1
echo "manifests_archive = "packagesite";" >> $1
echo "filesite_archive = "filesite";" >> $1
}
RunPkg() {
local pkg_dir=$1
local out_dir=$2
WriteMetaFile "${pkg_dir}/meta"
mkdir -p "${out_dir}"
local cmd="$PKG repo -m ${pkg_dir}/meta -o ${out_dir} ${pkg_dir}"
echo $cmd
$cmd
}
BuildRepo() {
local revision=$1
local gs_url="gs://webports/builds/${SDK_VERSION}/${revision}/publish"
${SCRIPT_DIR}/download_pkg.py ${revision}
cd ${NACLPORTS_ROOT}
local repo_dir=out/packages/prebuilt/repo
for pkg_dir in out/packages/prebuilt/pkg/*/ ; do
local out_dir=${repo_dir}/$(basename ${pkg_dir})
RunPkg $pkg_dir $out_dir
echo "Uploading to ${gs_url}/$(basename ${pkg_dir})"
cd ${out_dir}
gsutil cp -a public-read *.tbz ${gs_url}/$(basename ${pkg_dir})
cd -
done
}
BuildLocalRepo() {
cd ${NACLPORTS_ROOT}/out/publish
for pkg_dir in pkg_* ; do
RunPkg $pkg_dir $pkg_dir
done
}
UsageHelp() {
echo "./build_repo.sh - Build pkg repository using \
local/remote built packages"
echo ""
echo "./build_repo.sh [-l] [-r REVISION]"
echo "Either provide a revision(-r) for remote built pakcages or \
use -l for local built packages"
echo ""
echo "Description"
echo "-h show help messages"
echo "-l build pkg repository using local built packages"
echo "-r build pkg repository using remote built packages"
}
if [[ $# -lt 1 ]]; then
UsageHelp
exit 1
fi
OPTIND=1
while getopts "h?lr:" opt; do
case "$opt" in
h|\?)
UsageHelp
exit 0
;;
l) local=1
;;
r) local=0
revision=$OPTARG
;;
esac
done
shift $((OPTIND - 1))
if [[ ! -f ${PKG} ]]; then
TOOLCHAIN=clang-newlib make pkg F=1 V=1
fi
if [[ ${local} = 1 ]]; then
BuildLocalRepo
else
BuildRepo $revision
fi