#!/bin/sh -e

[ -n "$spt_dir" ] || spt_dir=/usr/share/spt3
. $spt_dir/init

# IDENT = name of repository
# INSTALLDIR = place of repository in $out_dir (default: ALTLinux/RPMS.$IDENT/)
# packages = file with list of packages in repository (default: $IDENT.packages)

[ -n "$INSTALLDIR" ] || INSTALLDIR=ALTLinux/RPMS.$IDENT
[ -n "$packages" ] || packages=$IDENT.packages

# Reinit RPM DB before running APT
aptbox=$work_dir/aptbox
rm -f "$aptbox/var/lib/rpm/*"
rpmdb --initdb --dbpath "$aptbox/var/lib/rpm"

# Prepare a list of packages with all dependencies
set -x
$aptbox/apt-get install --print-uris -y \
	`grep -h '^[^#]' $profile_dir/$packages` |
	sed -ne "s/^'\\([^']\\+\\)' .*/\\1/pg" |
	sed 's/file://g' |
	tee $tmp_dir/$IDENT.packages_u |
	sort -u > $tmp_dir/$IDENT.packages_s

[ -s "$tmp_dir/$IDENT.packages_u" ] || Fatal "Could not get packages list."

# 
mkdir -p "$out_dir/$INSTALLDIR"
list=$(echo $COMPONENTS_ID | tr ' ' '\n' | xargs -r printf "$tmp_dir/%s.packages_s ")
sort -u ${list:-/dev/null} |
	comm -13 - $tmp_dir/$IDENT.packages_s > $tmp_dir/$IDENT.packages_ss
fgrep -x -f $tmp_dir/$IDENT.packages_ss $tmp_dir/$IDENT.packages_u |
	tee $tmp_dir/$IDENT.packages |
	rsync -aL --no-relative $verbose --files-from=- / "$out_dir/$INSTALLDIR/" ||
	Fatal "Could not copy packages from $IDENT.packages to $INSTALLDIR."
set +x

# add4hashes
release="$out_dir/ALTLinux/base/release.$IDENT"
mkdir -p "`dirname $release`"
cat >$release <<__EOF__
Archive: $NAME
Component: $IDENT
Version: $VERSION
Origin: $ORIGIN
Label: $LABEL
Architecture: $ARCH
NotAutomatic: false
__EOF__

# zergmakehashes
if [ -n "$INSTALL2HASH" ]; then
	FILE="$out_dir/ALTLinux/base/base_pkginfo_x11.list"
	rm -f $FILE
	initlist=$(cat $tmp_dir/$IDENT.packages)
	initlist="$(echo "$initlist" |fgrep /setup-)
	$(echo "$initlist" |fgrep /glibc-core-)
	$(echo "$initlist" |fgrep /filesystem-)
	$(echo "$initlist" |egrep -v '/(setup|filesystem|glibc-core)-')"

	for i in $initlist; do
		p_filename=`basename $i`
		p_filesize=`stat -L -c %s  $out_dir/$INSTALLDIR/$p_filename`
		LC_ALL=C LANG=C rpm -qp --qf="Package: %{NAME}\nFilename: $p_filename\nVersion: %{VERSION}\nFileSize: $p_filesize\nSize: %{SIZE}\nSummary:%{SUMMARY}\n" $out_dir/$INSTALLDIR/$p_filename >>$FILE
	done
fi
COMPONENTS_ID="$COMPONENTS_ID $IDENT"
