diff options
Diffstat (limited to 'buildstream/data/ostree-push')
-rwxr-xr-x | buildstream/data/ostree-push | 152 |
1 files changed, 0 insertions, 152 deletions
diff --git a/buildstream/data/ostree-push b/buildstream/data/ostree-push deleted file mode 100755 index 3dcc77f6f..000000000 --- a/buildstream/data/ostree-push +++ /dev/null @@ -1,152 +0,0 @@ -#!/bin/bash -e - -# ostree-push.sh - Push OSTree commits to a remote repo using sshfs -# Copyright (C) 2016 Dan Nicholson <nicholson@endlessm.com> -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -ARGS=$(getopt -n "$0" \ - -o uvh \ - -l repo:,basedir:,update,gpg-sign:,gpg-homedir:,verbose,debug,help \ - -- "$@") -eval set -- "$ARGS" - -usage() { - cat <<EOF -Usage: $0 [OPTION]... REMOTE [REF]... -Push OSTree REFs to REMOTE - - --repo=PATH path to OSTree repository - --basedir=PATH location to create local mounts - -u, --update update the summary file - --gpg-sign=KEY-ID GPG key ID to sign the summary with - --gpg-homedir=HOMEDIR GPG homedir for finding keys - -v, --verbose print verbose information - --debug print debug information - -h, --help display this help and exit -EOF -} - -PULL_ARGS=() -SUMMARY_ARGS=() -UPDATE=false -BASEDIR=$(pwd) -while true; do - case "$1" in - --repo) - OSTREE_REPO=$2 - shift 2 - ;; - --basedir) - BASEDIR=$2 - shift 2 - ;; - -u|--update) - UPDATE=true - SUMMARY_ARGS+=("$1") - shift - ;; - --gpg-sign|--gpg-homedir) - SUMMARY_ARGS+=("$1=$2") - shift 2 - ;; - -v|--verbose) - PULL_ARGS+=("$1") - SUMMARY_ARGS+=("$1") - shift - ;; - --debug) - set -x - shift - ;; - -h|--help) - usage - exit 0 - ;; - --) - shift - break - ;; - esac -done - -if [ $# -lt 1 ]; then - echo "No remote specified" >&2 - exit 1 -fi - -REMOTE=$1 -shift - -# Figure out the local repo. This emulates ostree_repo_new_default(). -if [ -z "$OSTREE_REPO" ]; then - if [ -e objects ] && [ -e config ]; then - OSTREE_REPO=. - else - OSTREE_REPO=/ostree/repo - fi -fi - -# Exit handler -cleanup() { - if [ -n "$remote_repo" ]; then - # This is just unreliable, sleep 2 and retry seems to fix - # the case of forceful termination - fusermount -u "$remote_repo" || true - sleep 2 - fusermount -u "$remote_repo" || true - - rmdir "$remote_repo" - fi -} - -# Terminate handler -terminate() { - if [ ! -z "$term_pid" ]; then - kill -TERM "$term_pid" - wait "$term_pid" - fi - if [ ! -z "$kill_pid" ]; then - kill -KILL "$kill_pid" - fi - - # Do the cleanup after - cleanup -} - -trap cleanup EXIT -trap terminate TERM - -# Mount the remote repo -remote_repo=$(mktemp -d "${BASEDIR}/ostree-push.XXXXXXXXXX") - -sshfs "$remote_repo" "$REMOTE" & -term_pid="$!" -wait "$term_pid" -term_pid="" - -# Use pull-local to emulate pushing -ostree pull-local --repo="$remote_repo" "${PULL_ARGS[@]}" "$OSTREE_REPO" "$@" & -kill_pid="$!" -wait "$kill_pid" -kill_pid="" - -# Update the remote summary if asked -if $UPDATE; then - ostree summary --repo="$remote_repo" "${SUMMARY_ARGS[@]}" & - kill_pid="$!" - wait "$kill_pid" - kill_pid="" -fi |