--- /dev/null
+#!/usr/bin/perl
+# $IdPath$
+use POSIX qw(strftime);
+
+$|++;
+
+my $version = '0.0.1';
+my $todaydate = strftime "%Y%m%d", localtime;
+my $snapshot_dir = "/home/yasm/public_html/snapshots/$todaydate";
+my $cvs_dir = '/usr/local/cvs2/yasm/chrooted-cvs/cvs';
+my $build_dir = '/home/yasm/build';
+
+# Create snapshot directory
+system('mkdir', $snapshot_dir);
+
+# Build CVS tree tarball
+chdir("$cvs_dir/..") || die "Could not change to CVS directory";
+system('tar', '-czf', "$snapshot_dir/yasm-cvstree.tar.gz", 'cvs') == 0
+ or die "CVS tree tarball build failed: $?.";
+
+# Build CVS checkout tarball
+chdir($build_dir) || die "Could not change to build directory";
+system('rm', '-Rf', 'yasm') == 0
+ or die "Could not remove old CVS checkout directory: $?.";
+system('mkdir', 'yasm') == 0
+ or die "Could not create CVS checkout directory: $?.";
+chdir('yasm') || die "Could not change to CVS checkout directory.";
+system('cvs', '-q', "-d$cvs_dir", 'checkout', '.') == 0
+ or die "CVS checkout failed: $?.";
+chdir('..');
+system('tar', '-czf', "$snapshot_dir/yasm-cvs.tar.gz", 'yasm') == 0
+ or die "CVS checkout tarball build failed: $?.";
+chdir('yasm');
+
+# Update and build distribution tarball
+system("./autogen.sh >$snapshot_dir/autogen-log.txt") == 0
+ or die "autogen.sh failed: $?.";
+system("gmake distcheck >$snapshot_dir/make-log.txt") == 0
+ or die "build failed: $?.";
+system("cp *.tar.gz $snapshot_dir/") == 0
+ or die "dist tarball copy failed.";
+