mirror of
https://github.com/flatcar/scripts.git
synced 2025-08-07 04:56:58 +02:00
New script update_metadata to do a global update of both repos. Add support to update_ebuilds to do incremental updates when just pulling new ebuilds into portage-stable.
100 lines
3.0 KiB
Bash
Executable File
100 lines
3.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Copyright (c) 2013 The CoreOS Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
SCRIPT_ROOT=$(dirname $(readlink -f "$0"))
|
|
. "${SCRIPT_ROOT}/common.sh" || exit 1
|
|
|
|
# Default RSYNC options emerge --sync uses
|
|
RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --timeout=180"
|
|
|
|
DEFINE_string portage "rsync" \
|
|
"Path to a local portage tree or 'rsync' or 'cvs' to fetch from remote."
|
|
DEFINE_string portage_stable "${SRC_ROOT}/third_party/portage-stable" \
|
|
"Path to the portage-stable git checkout."
|
|
DEFINE_string cvsroot ":pserver:anonymous@anoncvs.gentoo.org:/var/cvsroot" \
|
|
"CVS location for gentoo-x86 to use with --portage=cvs"
|
|
DEFINE_string rsync "rsync://rsync.gentoo.org/gentoo-portage" \
|
|
"Rsync location for gentoo-portage to use with --portage=rsync"
|
|
DEFINE_boolean commit ${FLAGS_FALSE} \
|
|
"Commit all changes after updating portage-stable."
|
|
DEFINE_boolean regencache ${FLAGS_TRUE} \
|
|
"Regenerate cache for updated ebuilds."
|
|
|
|
|
|
# Parse flags
|
|
FLAGS "$@" || exit 1
|
|
eval set -- "${FLAGS_ARGV}"
|
|
switch_to_strict_mode
|
|
|
|
# Accept arguments from STDIN for batch processing
|
|
if [[ -z "$*" ]]; then
|
|
set -- $(</dev/stdin)
|
|
fi
|
|
|
|
if [[ -z "$*" ]]; then
|
|
die "No packages provided"
|
|
fi
|
|
|
|
# eclass updates impact coreos-overlay too, use update_metadata.
|
|
if [[ "$*" == *eclass* ]]; then
|
|
FLAGS_regencache=${FLAGS_FALSE}
|
|
fi
|
|
|
|
export CVSROOT="${FLAGS_cvsroot}"
|
|
cd "$FLAGS_portage_stable"
|
|
|
|
for pkg in "$@"; do
|
|
# Only allow packages, not categories or the whole tree
|
|
if [[ ! "$pkg" =~ ^[a-z0-9-][a-z0-9-]*\/[a-zA-Z0-9-][a-zA-Z0-9-]*$ ]] &&
|
|
[[ ! "$pkg" =~ ^(eclass|licenses|profiles|scripts) ]]; then
|
|
die "Invalid name $pkg, must be category/package or special dir."
|
|
fi
|
|
|
|
if [[ "$FLAGS_portage" == cvs ]]; then
|
|
rm -rf "$pkg"
|
|
cvs export -D now -d "$pkg" "gentoo-x86/$pkg"
|
|
else
|
|
if [[ "$FLAGS_portage" == rsync ]]; then
|
|
FLAGS_portage="${FLAGS_rsync}"
|
|
fi
|
|
mkdir -p "$pkg"
|
|
rsync $RSYNC_OPTS -v --exclude CVS "$FLAGS_portage/$pkg/" "$pkg"
|
|
fi
|
|
|
|
# Make sure we don't change the repo name to 'gentoo'
|
|
if [[ "$pkg" =~ ^profiles ]]; then
|
|
echo portage-stable > profiles/repo_name
|
|
fi
|
|
|
|
git add -A "$pkg"
|
|
|
|
# Sync up the ebuild metadata cache
|
|
if [[ $FLAGS_regencache -eq $FLAGS_TRUE && "$pkg" == */* ]]; then
|
|
egencache --repo=portage-stable --update "$pkg"
|
|
git add -A "metadata/md5-cache/${pkg}-*"
|
|
fi
|
|
done
|
|
|
|
if [[ $FLAGS_commit -eq $FLAGS_TRUE ]]; then
|
|
if [[ $# -eq 1 ]]; then
|
|
git commit -e -m "bump($1): sync with upstream"
|
|
else
|
|
cat > .git/COMMIT_EDITMSG <<EOF
|
|
bump($1): sync with upstream
|
|
|
|
Packages updated:
|
|
$(for p in "$@"; do echo " $p"; done | sort)
|
|
EOF
|
|
git commit -e -F .git/COMMIT_EDITMSG
|
|
fi
|
|
else
|
|
git status
|
|
fi
|
|
|
|
if [[ "$*" == *eclass* ]]; then
|
|
info "Please run update_metadata to update cache in all overlays."
|
|
fi
|