summaryrefslogtreecommitdiffstats
path: root/test/API/driver/kwsys/update-third-party.bash
diff options
context:
space:
mode:
Diffstat (limited to 'test/API/driver/kwsys/update-third-party.bash')
-rw-r--r--test/API/driver/kwsys/update-third-party.bash169
1 files changed, 0 insertions, 169 deletions
diff --git a/test/API/driver/kwsys/update-third-party.bash b/test/API/driver/kwsys/update-third-party.bash
deleted file mode 100644
index 3b8358e..0000000
--- a/test/API/driver/kwsys/update-third-party.bash
+++ /dev/null
@@ -1,169 +0,0 @@
-#=============================================================================
-# Copyright 2015-2016 Kitware, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#=============================================================================
-
-########################################################################
-# Script for updating third party packages.
-#
-# This script should be sourced in a project-specific script which sets
-# the following variables:
-#
-# name
-# The name of the project.
-# ownership
-# A git author name/email for the commits.
-# subtree
-# The location of the thirdparty package within the main source
-# tree.
-# repo
-# The git repository to use as upstream.
-# tag
-# The tag, branch or commit hash to use for upstream.
-# shortlog
-# Optional. Set to 'true' to get a shortlog in the commit message.
-#
-# Additionally, an "extract_source" function must be defined. It will be
-# run within the checkout of the project on the requested tag. It should
-# should place the desired tree into $extractdir/$name-reduced. This
-# directory will be used as the newest commit for the project.
-#
-# For convenience, the function may use the "git_archive" function which
-# does a standard "git archive" extraction using the (optional) "paths"
-# variable to only extract a subset of the source tree.
-########################################################################
-
-########################################################################
-# Utility functions
-########################################################################
-git_archive () {
- git archive --worktree-attributes --prefix="$name-reduced/" HEAD -- $paths | \
- tar -C "$extractdir" -x
-}
-
-die () {
- echo >&2 "$@"
- exit 1
-}
-
-warn () {
- echo >&2 "warning: $@"
-}
-
-readonly regex_date='20[0-9][0-9]-[0-9][0-9]-[0-9][0-9]'
-readonly basehash_regex="$name $regex_date ([0-9a-f]*)"
-readonly basehash="$( git rev-list --author="$ownership" --grep="$basehash_regex" -n 1 HEAD )"
-readonly upstream_old_short="$( git cat-file commit "$basehash" | sed -n '/'"$basehash_regex"'/ {s/.*(//;s/)//;p}' | egrep '^[0-9a-f]+$' )"
-
-########################################################################
-# Sanity checking
-########################################################################
-[ -n "$name" ] || \
- die "'name' is empty"
-[ -n "$ownership" ] || \
- die "'ownership' is empty"
-[ -n "$subtree" ] || \
- die "'subtree' is empty"
-[ -n "$repo" ] || \
- die "'repo' is empty"
-[ -n "$tag" ] || \
- die "'tag' is empty"
-[ -n "$basehash" ] || \
- warn "'basehash' is empty; performing initial import"
-readonly do_shortlog="${shortlog-false}"
-
-readonly workdir="$PWD/work"
-readonly upstreamdir="$workdir/upstream"
-readonly extractdir="$workdir/extract"
-
-[ -d "$workdir" ] && \
- die "error: workdir '$workdir' already exists"
-
-trap "rm -rf '$workdir'" EXIT
-
-# Get upstream
-git clone "$repo" "$upstreamdir"
-
-if [ -n "$basehash" ]; then
- # Use the existing package's history
- git worktree add "$extractdir" "$basehash"
- # Clear out the working tree
- pushd "$extractdir"
- git ls-files | xargs rm -v
- find . -type d -empty -delete
- popd
-else
- # Create a repo to hold this package's history
- mkdir -p "$extractdir"
- git -C "$extractdir" init
-fi
-
-# Extract the subset of upstream we care about
-pushd "$upstreamdir"
-git checkout "$tag"
-readonly upstream_hash="$( git rev-parse HEAD )"
-readonly upstream_hash_short="$( git rev-parse --short=8 "$upstream_hash" )"
-readonly upstream_datetime="$( git rev-list "$upstream_hash" --format='%ci' -n 1 | grep -e "^$regex_date" )"
-readonly upstream_date="$( echo "$upstream_datetime" | grep -o -e "$regex_date" )"
-if $do_shortlog && [ -n "$basehash" ]; then
- readonly commit_shortlog="
-
-Upstream Shortlog
------------------
-
-$( git shortlog --no-merges --abbrev=8 --format='%h %s' "$upstream_old_short".."$upstream_hash" )"
-else
- readonly commit_shortlog=""
-fi
-extract_source || \
- die "failed to extract source"
-popd
-
-[ -d "$extractdir/$name-reduced" ] || \
- die "expected directory to extract does not exist"
-readonly commit_summary="$name $upstream_date ($upstream_hash_short)"
-
-# Commit the subset
-pushd "$extractdir"
-mv -v "$name-reduced/"* .
-rmdir "$name-reduced/"
-git add -A .
-git commit -n --author="$ownership" --date="$upstream_datetime" -F - <<-EOF
-$commit_summary
-
-Code extracted from:
-
- $repo
-
-at commit $upstream_hash ($tag).$commit_shortlog
-EOF
-git branch -f "upstream-$name"
-popd
-
-# Merge the subset into this repository
-if [ -n "$basehash" ]; then
- git merge --log -s recursive "-Xsubtree=$subtree/" --no-commit "upstream-$name"
-else
- unrelated_histories_flag=""
- if git merge --help | grep -q -e allow-unrelated-histories; then
- unrelated_histories_flag="--allow-unrelated-histories "
- fi
- readonly unrelated_histories_flag
-
- git fetch "$extractdir" "upstream-$name:upstream-$name"
- git merge --log -s ours --no-commit $unrelated_histories_flag "upstream-$name"
- git read-tree -u --prefix="$subtree/" "upstream-$name"
-fi
-git commit --no-edit
-git branch -d "upstream-$name"