#!/usr/bin/perl -w # Create a SB.o compliant .info file # (and a .SlackBuild from a template, if one doesn't already exist, # and a slack-desc if a README exists) # Fill in your name and email address here: $name = 'B. Watson'; $email = 'yalhcru@gmail.com'; use LWP::Simple; use Digest::MD5 'md5_hex'; sub usage { die "usage: mkslackinfo url [homepage] [version]\n"; } $url = shift || &usage; # Take package name from the current dir chomp ($package = `pwd`); $package =~ s,.*/,,; # Take filename from last part of URL ($file = $url) =~ s,.*/,,; # Generate appropriate extract command if($file =~ /\.zip$/i) { $extract = "unzip \$CWD/\$PRGNAM-\$VERSION.zip"; } elsif($file =~ /\.rar$/i) { $extract = "unrar x \$CWD/\$PRGNAM-\$VERSION.rar"; } elsif($file =~ /\.7z$/i) { $extract = "7za x \$CWD/\$PRGNAM-\$VERSION.rar"; } elsif($file =~ /(\.tar(?:$|\..*)|\.t[bxg]z)/i) { $extract = "tar xvf \$CWD/\$PRGNAM-\$VERSION$1"; } $homepage = shift; if(!$homepage) { if($url =~ m{http://downloads.(?:sourceforge|sf).net/([^/]+)/}) { $homepage = "http://sourceforge.net/projects/$1/"; } elsif($url =~ m,((?:ht|f)tp://[^/]+/),) { $homepage = $1; } else { die "Can't figure out homepage\n"; } warn "Assuming homepage is $homepage\n"; } $version = shift || 0; if(!$version) { # Try to figure out the version number. The regex is fairly dumb. if($file =~ /-(\d[\d._]+(?:[a-z]+)?)\.(?:tar|t[gzb]z|zip|rar|7z)/) { $version = $1; warn "Version appears to be $version\n"; } else { die "Can't figure out version number\n"; } } if(not -e "$package.SlackBuild") { warn "$package.SlackBuild does not exist, creating from template\n"; open my $build, ">$package.SlackBuild" or die $!; while() { s/__NAME__/$name/g; s/__EMAIL__/$email/g; s/__PRGNAM__/$package/g; s/__VERSION__/$version/g; s/__EXTRACT__/$extract/g; print $build "$_"; } close $build; chmod 0755, "$package.SlackBuild"; } if((-e "README") && (! -e "slack-desc")) { warn "slack-desc does not exist, creating from existing README\n"; system("mkslackdesc"); } print STDERR "Downloading $url..."; $content = get($url); if($content) { $md5 = md5_hex($content); print STDERR "OK\nWriting $package.info\n"; } else { warn "Can't download $url with LWP::Simple, MD5SUM will be wrong in .info\n"; $md5 = "FIXME"; } open $f, ">$package.info" or die $!; $content = < /dev/null || true find $PKG/usr/man -type f -exec gzip -9 {} \; for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done rm -f $PKG/usr/info/dir gzip -9 $PKG/usr/info/*.info* find $PKG -name perllocal.pod \ -o -name ".packlist" \ -o -name "*.bs" \ | xargs rm -f mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION cp -a \ $PKG/usr/doc/$PRGNAM-$VERSION cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild mkdir -p $PKG/install cat $CWD/slack-desc > $PKG/install/slack-desc cat $CWD/doinst.sh > $PKG/install/doinst.sh cd $PKG /sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}