OpenSDE Framework (without history before r20070)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

75 lines
2.1 KiB

#!/bin/sh
# --- SDE-COPYRIGHT-NOTE-BEGIN ---
# This copyright note is auto-generated by ./scripts/Create-CopyPatch.
#
# Filename: lib/misc/copypackage.sh
# Copyright (C) 2008 The OpenSDE Project
# Copyright (C) 2006 The T2 SDE Project
#
# More information can be found in the files COPYING and README.
#
# 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; version 2 of the License. A copy of the
# GNU General Public License can be found in the file COPYING.
# --- SDE-COPYRIGHT-NOTE-END ---
show_usage() {
echo "Usage: $0 <source> <target> <pkg> ..."
exit 1
}
cppkg() {
local from="$1" to="$2" pkg="$3"
if [ -f $from/var/adm/flists/$pkg ]; then
if [ -f $to/var/adm/flists/$pkg ]; then
echo "$pkg: already present at target ($to)"
cut -d' ' -f2- $to/var/adm/flists/$pkg | while read -r f; do
if [ "$f" = "var/adm/flists/$pkg" ]; then
true
elif [ ! -d "$to/$f" ]; then
rm -vf "$to/$f"
fi
done
rm -vf $to/var/adm/logs/*-$pkg.{err,out,log} 2> /dev/null
fi
echo "$pkg: $from -> $to"
cut -d' ' -f2- $from/var/adm/flists/$pkg |
tar -C "$from/" --ignore-failed-read --no-recursion -T - -c -O |
tar -C "$to" --same-owner --preserve -xvf -
cp -v $from/var/adm/logs/*-$pkg.{err,out,log} $to/var/adm/logs/ 2> /dev/null
else
echo "$pkg: package not found at source ($from)"
fi
}
source="$1"; shift
target="$1"; shift
if [ $# -gt 0 -a -f ./config/$source/config -a -f ./config/$target/config -a "$source" != "$target" ]; then
SDECFG_ID=
eval `grep SDECFG_ID= ./config/$source/config`
if [ -d "./build/$SDECFG_ID/var/adm/flists/" ]; then
source=./build/$SDECFG_ID
SDECFG_ID=
eval `grep SDECFG_ID= ./config/$target/config`
if [ -d "./build/$SDECFG_ID/var/adm/flists/" ]; then
target=./build/$SDECFG_ID
for x in $*; do
cppkg "$source" "$target" "$x"
done
else
echo "'$target' is not a valid config" 1>&2
show_usage
fi
else
echo "'$source' is not a valid config" 1>&2
show_usage
fi
else
echo "Invalid Arguments" 1>&2
show_usage
fi