#!/bin/bash

. ../init.sh

set -e

export PORTDIR=${as}/portdir

mktmpdir

d=${PORTDIR}/profiles
entries() {
	sed -e 's:#.*::' -e '/^$/d' "$1"
}

# check arch.list
f="$d/arch.list"
all=$(entries "$f")
for x in ${all} ; do
	quse -CD $x > x
	echo " arch:$x: $x architecture" > good
	cat good >> all.good
	diff -u x good
done
quse -CD ${all} > x
diff -u x all.good
rm x good all.good
tpass "arch.list"

# check use.desc
f="$d/use.desc"
all=$(entries "$f" | awk '{print $1}')
for x in ${all} ; do
	quse -CD $x > x
	sed -n -e "/^$x - /{s|^[^ ]* - | global:$x: |;p}" "$f" > good
	cat good >> all.good
	diff -u x good
done
quse -CD ${all} > x
diff -u x all.good
rm x good all.good
tpass "use.desc"

# check use.local.desc
f="$d/use.local.desc"
all=$(entries "$f" | awk '{print $1}' | cut -f2 -d:)
for x in ${all} ; do
	quse -CD $x > x
	sed -n -e "/^[^:]*:$x - /{s|^\([^:]*\):[^ ]* - | local:$x:\1: |;p}" "$f" > good
	cat good >> all.good
	diff -u x good
done
quse -CD ${all} > x
diff -u x all.good
rm x good all.good
tpass "use.local.desc"

# check desc subdir
f="$d/desc/elibc.desc"
all=$(entries "$f" | awk '{print $1}')
for x in ${all} ; do
	quse -CD $x > x
	sed -n -e "/^$x - /{s|^[^ ]* - | ${f##*/}:$x: |;p}" "$f" > good
	cat good >> all.good
	diff -u x good
done
quse -CD ${all} > x
diff -u x all.good
rm x good all.good
tpass "desc/elibc.desc"

# check cross file matches
# sort because quse order depends on the readdir order
# which depends on the fs itself.  quse doesnt do sorting
# because in general, who cares.  faster this way.
quse -CD abc | LC_ALL=C sort > x
diff -u ${as}/list01.good x
rm x
tpass "multi file match"

trimtmpdir

###### faster test needed.########
end
##################################
type -p mksquashfs || exit 0

export PORTDIR=$(portageq envvar PORTDIR) ;

arches="x86 amd64 ppc"

for arch in $arches; do
	mkdir -p PORTDIR-${arch}
	cd PORTDIR-${arch} || exit 1
	[[ ! -e arch.${arch} ]] && quse -CKe ${arch} > arch.${arch} ;
	awk '{print $1}' < arch.${arch} | cut -d / -f 1-2 | uniq | while read cpn ; do mkdir -p $cpn ; done ; 
	for ebuild in $(awk '{print $1}' < arch.${arch}) ; do cp $PORTDIR/$ebuild ./$ebuild; done ;
	quse -CKe ${arch} | awk '{print $1}' | cut -d / -f 1-2 | uniq | while read cpn ; do cp -a $PORTDIR/$cpn/files ./$cpn/; done ;
	cp -a $PORTDIR/{eclass,profiles,licences} . ; sync ; 
	find . -type d -name CVS | while read foo; do rm $foo/* ; sync ; rmdir $foo ; done ;
	mksquashfs ./ ../PORTDIR-${arch}.squashfs -noappend -e arch.${arch} ; 
	rm -rf *-*
	cd -
done
ls -lh PORTDIR-*.squashfs
