#!/bin/sh
|
#
|
# This file and its contents are supplied under the terms of the
|
# Common Development and Distribution License ("CDDL)". You may
|
# only use this file in accordance with the terms of the CDDL.
|
#
|
# A full copy of the text of the CDDL should have accompanied this
|
# source. A copy of the CDDL is also available via the Internet at
|
# http://www.illumos.org/license/CDDL.
|
#
|
|
#
|
# Copyright 2012, Andrzej Szeszo
|
#
|
|
#PREFIX=cde-runtime
|
#SRCREPO=http://pkg.openindiana.org/legacy
|
#PKGLIST=pkg:/cde/$PREFIX@0.5.11,5.11-0.134:20100302T005909Z
|
|
set -e
|
|
PREFIX=$1; shift
|
ARCHIVE=$1; shift
|
SRCREPO=$1; shift
|
PKGLIST="$@"
|
|
[ -f $ARCHIVE ] && exit 0
|
|
if [ ! -d $PREFIX.pkgrecv ]; then
|
mkdir $PREFIX.pkgrecv
|
pkgrecv -s $SRCREPO -d $PREFIX.pkgrecv --raw $PKGLIST
|
fi
|
|
dir() {
|
parm=$1
|
while [ ! x$1 = x ]; do
|
variant=
|
case $parm in
|
path=*)
|
path=`echo $parm|sed s/^path=//`
|
;;
|
variant.arch=*)
|
variant=`echo $parm|sed s/^variant.arch=//`
|
;;
|
esac
|
shift
|
parm=$1
|
done
|
|
if [ -z $variant ]; then
|
mkdir -p $PREFIX/i386/$path
|
mkdir -p $PREFIX/sparc/$path
|
elif [ $variant = i386 ]; then
|
mkdir -p $PREFIX/i386/$path
|
elif [ $variant = sparc ]; then
|
mkdir -p $PREFIX/sparc/$path
|
fi
|
|
}
|
|
file() {
|
hash=$1
|
parm=$1
|
while [ ! x$1 = x ]; do
|
variant=
|
case $parm in
|
path=*)
|
path=`echo $parm|sed s/^path=//`
|
;;
|
mode=*)
|
mode=`echo $parm|sed s/^mode=//`
|
;;
|
variant.arch=*)
|
variant=`echo $parm|sed s/^variant.arch=//`
|
;;
|
esac
|
shift
|
parm=$1
|
done
|
|
if [ -z $variant ]; then
|
[ -f $PREFIX/i386/$path ] && rm -f $PREFIX/i386/$path
|
mkdir -p `dirname $PREFIX/i386/$path`
|
cp `ls $PREFIX.pkgrecv/*/*/$hash|head -1` $PREFIX/i386/$path
|
chmod $mode $PREFIX/i386/$path
|
[ -f $PREFIX/sparc/$path ] && rm -f $PREFIX/sparc/$path
|
mkdir -p `dirname $PREFIX/sparc/$path`
|
cp `ls $PREFIX.pkgrecv/*/*/$hash|head -1` $PREFIX/sparc/$path
|
chmod $mode $PREFIX/sparc/$path
|
elif [ $variant = i386 ]; then
|
[ -f $PREFIX/i386/$path ] && rm -f $PREFIX/i386/$path
|
mkdir -p `dirname $PREFIX/i386/$path`
|
cp `ls $PREFIX.pkgrecv/*/*/$hash|head -1` $PREFIX/i386/$path
|
chmod $mode $PREFIX/i386/$path
|
elif [ $variant = sparc ]; then
|
[ -f $PREFIX/sparc/$path ] && rm -f $PREFIX/sparc/$path
|
mkdir -p `dirname $PREFIX/sparc/$path`
|
cp `ls $PREFIX.pkgrecv/*/*/$hash|head -1` $PREFIX/sparc/$path
|
chmod $mode $PREFIX/sparc/$path
|
fi
|
|
}
|
|
hardlink() {
|
parm=$1
|
while [ ! x$1 = x ]; do
|
variant=
|
case $parm in
|
path=*)
|
path=`echo $parm|sed s/^path=//`
|
;;
|
target=*)
|
target=`echo $parm|sed s/^target=//`
|
;;
|
variant.arch=*)
|
variant=`echo $parm|sed s/^variant.arch=//`
|
;;
|
esac
|
shift
|
parm=$1
|
done
|
|
if [ -z $variant ]; then
|
[ -f $PREFIX/i386/$path ] && rm -f $PREFIX/i386/$path
|
mkdir -p `dirname $PREFIX/i386/$path`
|
ln `dirname $PREFIX/i386/$path`/$target $PREFIX/i386/$path
|
[ -f $PREFIX/sparc/$path ] && rm -f $PREFIX/sparc/$path
|
mkdir -p `dirname $PREFIX/sparc/$path`
|
ln `dirname $PREFIX/sparc/$path`/$target $PREFIX/sparc/$path
|
elif [ $variant = i386 ]; then
|
[ -f $PREFIX/i386/$path ] && rm -f $PREFIX/i386/$path
|
mkdir -p `dirname $PREFIX/i386/$path`
|
ln `dirname $PREFIX/i386/$path`/$target $PREFIX/i386/$path
|
elif [ $variant = sparc ]; then
|
[ -f $PREFIX/sparc/$path ] && rm -f $PREFIX/sparc/$path
|
mkdir -p `dirname $PREFIX/sparc/$path`
|
ln `dirname $PREFIX/sparc/$path`/$target $PREFIX/sparc/$path
|
fi
|
|
}
|
|
link() {
|
parm=$1
|
while [ ! x$1 = x ]; do
|
variant=
|
case $parm in
|
path=*)
|
path=`echo $parm|sed s/^path=//`
|
;;
|
target=*)
|
target=`echo $parm|sed s/^target=//`
|
;;
|
variant.arch=*)
|
variant=`echo $parm|sed s/^variant.arch=//`
|
;;
|
esac
|
shift
|
parm=$1
|
done
|
|
if [ -z $variant ]; then
|
[ -h $PREFIX/i386/$path ] && rm -f $PREFIX/i386/$path
|
mkdir -p `dirname $PREFIX/i386/$path`
|
ln -s $target $PREFIX/i386/$path
|
[ -h $PREFIX/sparc/$path ] && rm -f $PREFIX/sparc/$path
|
mkdir -p `dirname $PREFIX/sparc/$path`
|
ln -s $target $PREFIX/sparc/$path
|
elif [ $variant = i386 ]; then
|
[ -h $PREFIX/i386/$path ] && rm -f $PREFIX/i386/$path
|
mkdir -p `dirname $PREFIX/i386/$path`
|
ln -s $target $PREFIX/i386/$path
|
elif [ $variant = sparc ]; then
|
[ -h $PREFIX/sparc/$path ] && rm -f $PREFIX/sparc/$path
|
mkdir -p `dirname $PREFIX/sparc/$path`
|
ln -s $target $PREFIX/sparc/$path
|
fi
|
|
}
|
|
license() {
|
hash=$1
|
parm=$1
|
while [ ! x"$1" = x ]; do
|
case $parm in
|
license=*)
|
license=`echo $parm|sed s/^license=//`
|
;;
|
esac
|
shift
|
parm=$1
|
done
|
cp `ls $PREFIX.pkgrecv/*/*/$hash|head -1` $PREFIX/i386/"$license"
|
cp `ls $PREFIX.pkgrecv/*/*/$hash|head -1` $PREFIX/sparc/"$license"
|
|
}
|
|
|
for i in $PREFIX.pkgrecv/*/*/manifest.dir; do
|
[ -f $i ] && sed -e 's/\([^ ]*\)/"\1"/g' < $i > $i-edited && . $i-edited
|
done
|
|
for i in $PREFIX.pkgrecv/*/*/manifest.file; do
|
[ -f $i ] && sed -e 's/\([^ ]*\)/"\1"/g' < $i > $i-edited && . $i-edited
|
done
|
|
for i in $PREFIX.pkgrecv/*/*/manifest.hardlink; do
|
[ -f $i ] && sed -e 's/\([^ ]*\)/"\1"/g' < $i > $i-edited && . $i-edited
|
done
|
|
for i in $PREFIX.pkgrecv/*/*/manifest.link; do
|
[ -f $i ] && sed -e 's/\([^ ]*\)/"\1"/g' < $i > $i-edited && . $i-edited
|
done
|
|
for i in $PREFIX.pkgrecv/*/*/manifest.license; do
|
[ -f $i ] && sed -e 's/\([^ ]*\)/"\1"/g' < $i > $i-edited && . $i-edited
|
done
|
|
tar cf - $PREFIX | gzip -9 >$ARCHIVE
|
|
rm -rf $PREFIX.pkgrecv $PREFIX
|