blob: 159b7d044b33249ac48894c3530767068a27b4ac [file] [log] [blame]
#!/bin/bash
# Copyright (c) 2013 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.
# This script allows an LLVM change to be sent to the PNaCl toolchain
# trybots for testing. It packages up the LLVM Git commit as a
# base64-encoded Git bundle so that it can be sent to the trybots as a
# text-only patch file.
#
# This script assumes you are using a Git checkout of the
# native_client source tree.
#
# Example usage: After making changes to toolchain_build/src/llvm and committing
# them, you can test the changes with the following:
#
# ./pnacl/llvm_change_try_helper.sh # Commits a trybot-only change
# git try
# git reset --hard HEAD^ # Removes the trybot-only change
set -eux
if [ "$#" = 1 ]; then
component="$1"
elif [ "$#" = 0 ]; then
# Default
component=llvm
else
echo "Usage: $0 [<component-name>]"
echo "where <component-name> is the name of a subdirectory of toolchain_build/src/"
exit 1
fi
top_dir="$(pwd)"
mkdir -p pnacl/not_for_commit
pushd toolchain_build/src/${component}
# Save the commit ID plus its subject line to give readable context.
git log --no-walk --pretty="format:%H%n%ad%n%s" HEAD \
> $top_dir/pnacl/not_for_commit/${component}_commit_id
git bundle create $top_dir/pnacl/not_for_commit/${component}_bundle \
origin/master..HEAD
popd
python3 -c "import base64, sys; base64.encode(sys.stdin, sys.stdout)" \
< pnacl/not_for_commit/${component}_bundle \
> pnacl/not_for_commit/${component}_bundle.b64
git add pnacl/not_for_commit/${component}_bundle.b64
git add pnacl/not_for_commit/${component}_commit_id
git commit -m "${component} patch for trybot" \
pnacl/not_for_commit/${component}_bundle.b64 \
pnacl/not_for_commit/${component}_commit_id