aboutsummaryrefslogtreecommitdiff
path: root/mkslackinfo
diff options
context:
space:
mode:
authorB. Watson <yalhcru@gmail.com>2015-04-08 01:09:31 -0400
committerB. Watson <yalhcru@gmail.com>2015-04-08 01:09:31 -0400
commit09e8113d7c05157cd54e16f820f6c7ce471d53b7 (patch)
tree3a481b2f6f13e827495e90e83c509204fa19582a /mkslackinfo
parentc09112454417693693c265963b1f829695611b2d (diff)
downloadsbostuff-09e8113d7c05157cd54e16f820f6c7ce471d53b7.tar.gz
Add some more scripts
Diffstat (limited to 'mkslackinfo')
-rwxr-xr-xmkslackinfo211
1 files changed, 211 insertions, 0 deletions
diff --git a/mkslackinfo b/mkslackinfo
new file mode 100755
index 0000000..db11244
--- /dev/null
+++ b/mkslackinfo
@@ -0,0 +1,211 @@
+#!/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(<DATA>) {
+ 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 = <<EOF;
+PRGNAM="$package"
+VERSION="$version"
+HOMEPAGE="$homepage"
+DOWNLOAD="$url"
+MD5SUM="$md5"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="$name"
+EMAIL="$email"
+EOF
+print $content;
+print $f $content;
+close $f;
+
+if($url =~ /sourceforge\.net/i) {
+ $extra_wget_params = "--user-agent wget";
+} else {
+ $extra_wget_params = "--referer='$url'";
+}
+
+exec("wget $extra_wget_params $url");
+
+__DATA__
+#!/bin/sh
+
+# Slackware build script for __PRGNAM__
+
+# Written by __NAME__ (__EMAIL__)
+
+# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
+
+PRGNAM=__PRGNAM__
+VERSION=${VERSION:-__VERSION__}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i486 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+__EXTRACT__
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/$PRGNAM-$VERSION \
+ --build=$ARCH-slackware-linux
+
+make
+make install-strip DESTDIR=$PKG
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /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 <documentation> \
+ $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}