#!/bin/bash -eu

#
# Ellenőriz egy-két dolgot, hogy az FHS szabványnak megfelel-e a csomag
# (például nem tartalmaz /usr/local alatti fájlt).
#
# Meg egyebeket is, például a fájlneveknek UTF-8-nak kell lenniük.
#
# Konfig fájlból letiltható ez a lépés, hiszen például valamelyik alap
# csomagnak (jelen példánál maradva uhu-base) igencsak illik létrehoznia a
# /usr/local alatti könyvtárakat.
#

. /usr/lib/uhubuild/uhubuild-common

cd "$UB_PACKAGEDIR"

shopt -s dotglob

for pkg in $UB_PACKAGES; do
	if grep -qx skip-fhs "$UB_SRCDIR/packages/$pkg/options"; then
		echo " $pkg: kihagyva"
		continue
	fi
	if [ -d "$pkg/usr/build" ]; then
		error "Az FHS nem engedi meg a $pkg/usr/build könyvtárat! (libtool bug?)"
	fi

	for i in "$pkg"/*; do
		case "$i" in
			*/bin)   ;;
			*/boot)  ;;
			*/dev)   ;;
			*/etc)   ;;
			*/home)  ;;
			*/lib)   ;;
			*/lib64) ;;
			*/opt)   ;;
			*/run)   ;;
			*/sbin)  ;;
			*/srv)   ;;
			*/usr)   ;;
			*/var)   ;;
			*/DEBIAN) ;;
			*)
				error "FHS által tiltva: $i (package: $pkg)"
				;;
		esac
	done

	for i in "$pkg"/usr/*; do
		case "$i" in
			*/bin)     ;;
			*/etc)     ;;
			*/games)   ;;
			*/include) ;;
			*/lib)     ;;
			*/lib64)   ;;
			*/libexec) ;;
			*/local)   ;;
			*/sbin)    ;;
			*/share)   ;;
			*/src)     ;;
			*)
				error "FHS által tiltva: $i (package: $pkg)"
				;;
		esac
	done
	# Ezeket nem mind az FHS tiltja, némelyiket csak a józan ész, meg mi :-)
	for dir in \
	  /etc/etc \
	  /lib/lib \
	  /share \
	  /usr/doc \
	  /usr/lib/lib \
	  /usr/local \
	  /usr/locale \
	  /usr/man \
	  /usr/share/doc/doc \
	  /usr/share/share \
	  /usr/usr \
	  /usr/var \
	  /var/local \
	  /var/var; do
		if [ -d "$pkg/$dir" ]; then
			error "$dir könyvtár? Ejnye! Ilyet nem szabad!"
		fi
	done
	# Ezek csak szimlinkek, nem valós könyvtárak
	for dir in \
	  /bin \
	  /lib \
	  /lib64 \
	  /sbin; do
		if [ -d "$pkg/$dir" ]; then
			error "$dir csak egy szimlink, nem valós könyvtár!"
		fi
	done
	while read file; do
		error "${file#$pkg/}? Ejnye! Ilyet nem szabad!"
	done < <(find "$pkg" -mindepth 1 -maxdepth 1 -type f)

	if ! find "$pkg" | iconv -f UTF-8 -t UTF-8 >/dev/null 2>&1; then
		echo '  Nem érvényes UTF-8 fájlnév'
		find "$pkg" | iconv -f UTF-8 -t UTF-8 2>&1 | LANG=C grep illegal -B1
		exit 1
	fi
done
