Skip to content

Instantly share code, notes, and snippets.

@mago0
Created April 24, 2012 15:34
Show Gist options
  • Save mago0/2480727 to your computer and use it in GitHub Desktop.
Save mago0/2480727 to your computer and use it in GitHub Desktop.
#!/usr/bin/perl
use strict;
use warnings;
my $usage = <<END;
Usage: $0 [options]
-p, --package name of package (REQUIRED)
-s, --source_dir directory containing source files (defaults to ./..)
-a, --all build binary and source packages
-h, --help display this help and exit
END
use FindBin qw($Bin);
use File::Temp qw(tempdir);
use Getopt::Long;
GetOptions(
'package=s' => \my $package,
'source_dir:s' => \my $source_dir,
all => \my $build_all,
help => sub { die $usage },
);
die $usage unless $package;
my $contrib = $Bin;
my $rpmbuild = "$contrib/rpmbuild";
$source_dir ||= "$contrib/..";
# Clean up rpmbuild dirs.
foreach my $dir qw(BUILD BUILDROOT SRPMS RPMS SOURCES) {
system "rm -rf $rpmbuild/$dir";
mkdir "$rpmbuild/$dir";
}
# Create source tarball
my $tmpdir = tempdir(CLEANUP => 1);
system <<END;
cp -a $source_dir $tmpdir/$package
find $tmpdir/$package -depth -name .svn -exec rm -rf {} \\;
tar czf $rpmbuild/SOURCES/$package.tar.gz -C $tmpdir $package
END
# Build rpm.
system (
'rpmbuild',
$build_all ? '-ba' : '-bs',
'--nodeps',
'--define' => "_topdir $rpmbuild",
"$rpmbuild/SPECS/$package.spec"
);
#
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment