#!/usr/bin/perl

#
# because Squeak has many plugins,
# there are also many dependencies 
# in order to have a small "kernel" package
# this script is used
#
# the script "classifies" plugins into currently 3 categories:
#  - stack-spur-nodisplay (only libc,libm math,libpthread, ksh)
#  - stack-spur-display-X11 (only x11,xext,xrender)
#  - stack-spur (ssl,ffi,pulseaudio freetype2,gnome, everything else)
#
# ./classify.pl < sample2.p5m
#

open(NODISPLAY,">>","stack-spur-nodisplay.p5m") || die "Can't open stack-spur-nodisplay.p5m";

open(X11,">>","stack-spur-display-X11.p5m") || die "Can't open stack-spur-display-X11.p5m";

open(SSL,">>","stack-spur-ssl.p5m") || die "Can't open stack-spur-ssl.p5m";
open(VEP,">>","stack-spur-vep.p5m") || die "Can't open stack-spur-vep.p5m";

open(REST,">>","stack-spur.p5m") || die "Can't open stack-spur.p5m";

while (<>) {
	if (/^#/) {
		# ignore lines that start with comment
	} elsif (/^$/) {
		# ignore empty lines
	} elsif (/license /) {
		# ignore license lines
	} elsif (/set name=/) {
		# ignore those lines
	} elsif (/dir  path=/) {
		# ignore those lines
	} elsif (/file path=usr\/squeak/) {
		# ignore those lines
	} elsif (/file path=/) {
		if (/Sun/) {
			# ignore the Sun sound plugin - we use pulseaudio
		} elsif (/vm-sound-OSS/) {
			# ignore the OSS sound plugin - we use pulseaudio
		} elsif (/usr\/bin/) {
			# don't deal with driver scripts here
		} elsif (/usr\/doc/) {
			# don't deal with docs here
		} elsif (/man1/) {
			# don't deal with the manpages here
		} elsif (/squeak$/) {
			# don't deal with the actual binary here
		} elsif (/ckformat^/) {
			# don't deal with the ckformat binary here
		} elsif (/AioPlugin/) {
			print NODISPLAY $_;
		} elsif (/ClipboardExtendedPlugin/) {
			print X11 $_;
		} elsif (/FileCopyPlugin/) {
			print NODISPLAY $_;
		} elsif (/HostWindowPlugin/) {
			print X11 $_;
		} elsif (/ImmX11Plugin/) {
			print X11 $_;
		} elsif (/Squeak3D/) {
			print X11 $_;
		} elsif (/SqueakSSL/) {
			print SSL $_;
		} elsif (/B3DAcceleratorPlugin/) {
			print X11 $_;
		} elsif (/UnixOSProcessPlugin/) {
			print NODISPLAY $_;
		} elsif (/MD5Plugin/) {
			print NODISPLAY $_;
		} elsif (/SHA2Plugin/) {
			print NODISPLAY $_;
		} elsif (/DESPlugin/) {
			print NODISPLAY $_;
		} elsif (/XDisplayControlPlugin/) {
			print X11 $_;
		} elsif (/VectorEnginePlugin/) {
			print VEP $_;
		} elsif (/vm-sound-null/) {
			print NODISPLAY $_;
		} elsif (/vm-display-null/) {
			print NODISPLAY $_;
		} elsif (/vm-display-X11/) {
			print X11 $_;
		} elsif (/vm-display-X11/) {
			print X11 $_;
		} elsif (/usr\/lib\/squeak/) {
			print REST $_;
		} elsif (/usr\/lib\/\$\(MACH64\)\/squeak/) {
			print REST $_;
		} else {
			# unclassified files
			print $_;
		}
	} elsif (/inisqueak.1/) {
		# ignore manpage hardlink
	} elsif (/hardlink path=/) {
		# unclassified files
		print $_;
	} elsif (/link path=/) {
		# unclassified files
		print $_;
	} else {
		# unclassified files
		print $_;
	}
}