summaryrefslogtreecommitdiff
path: root/rpm/build/enrpm
diff options
context:
space:
mode:
Diffstat (limited to 'rpm/build/enrpm')
-rwxr-xr-xrpm/build/enrpm178
1 files changed, 0 insertions, 178 deletions
diff --git a/rpm/build/enrpm b/rpm/build/enrpm
deleted file mode 100755
index 3e674bc..0000000
--- a/rpm/build/enrpm
+++ /dev/null
@@ -1,178 +0,0 @@
-#!/usr/bin/perl -w
-#
-# Attempt to build RPMs for Freeside from a tarball or module
-#
-# Contains portions of "cpanspec" http://cpanspec.sourceforge.net/
-
-=head1 NAME
-
-enrpm - Attempt to build RPMs for Freeside from a tarball or a module
-
-=head1 SYNOPSIS
-
-enrpm [options] [tarball|module-name [...]]
-
- Options:
- --help -h Help message
-
-=head1 DESCRIPTION
-
-B<enrpm> will generate a spec file to build a rpm from a CPAN-style
-Perl module distribution, then try to build RPMs from that spec file
-under mock, and update the repositories if successful.
-
-B<enrpm> uses the file extension of the tarball or module-name specified
-on the command line to determine if the argument is a tarball or a module name.
-
-Modules are downloaded from the CPAN. You must have initialized CPAN on the machine
-for B<enrpm> to be able to do this.
-
-For tarballs B<enrpm> attempts to build a usable .spec file using cpanflute2, and then builds
-an SRPM from the .spec file and the tarball.
-
-Once an SRPM has been built, B<enrpm> uses an external script to build binary RPMs under "mock".
-It then uses a second script to update the repositories.
-
-=head1 OPTIONS
-
-=over 4
-
-=item B<--help>
-
-Print a brief help message and exit.
-
-=item B<--packager>
-
-Specify the name and e-mail address of the packager. This winds up in auto-generated .spec files.
-
-=item B<--server>
-
-Specify the host name or IP address of the server on which the SRPM will be built. This server must be
-set up for SRPM building, which means it must have both B<ovid> and B<cpanflute2> installed on it.
-
-=item B<--dry-run>
-
-Just print out commands, don't actually run them.
-
-=back
-
-=head1 BUGS
-
-Currently has little in the way of error detection and diagnostics.
-
-The back-end should be replaced with an existing build system such as koji.
-
-=head1 AUTHOR
-
-Richard Siddall <richard.siddall@elirion.net>
-
-=head1 SEE ALSO
-
-L<perl(1)>, L<cpan2rpm(1)>, L<cpanflute2(1)>
-
-=cut
-
-use strict;
-use Getopt::Long;
-use Cwd qw/getcwd abs_path/;
-use File::Basename;
-use Sys::Hostname; # False laziness to get around a real config file...
-
-my %opts;
-
-GetOptions(\%opts, 'packager=s', 'release=s', 'server=s', 'dryrun');
-
-$ENV{PATH} = "/bin:/usr/bin";
-
-sub usage {
- print STDERR "usage: enrpm --packager <Your Name <you\@example.com>> [--release=<rpm-release-string>] --server <server-name> [--dryrun] tarball|module-name\n";
- print STDERR "where:\n\t--packager is the name and e-mail address of the packager for the .spec file\n\t--release is the rpm release number for the .spec file\n\t--server is the server to build the SRPM on\n\t--dryrun means do not actually run the commands\n\n";
- print STDERR "\ttarball is the name of a tarball containing the Perl module to be packaged\n";
- print STDERR "\tmodule-name is the name of a CPAN Perl module to be packaged\n";
- exit;
-}
-
-# Feeble excuse for not having a real configuration file
-my $user = 'ivan';
-my $buildsys = "/home/$user/buildsys";
-#my $rembuild = '/home/rsiddall/buildsys/ref';
-my $remdeps = '/home/ivan';
-my $rpmtopdir = "/home/$user/redhat";
-my $packager = 'Ivan Kohler <ivan@freeside.biz>';
-my $server = '10.5.4.5';
-
-$server = $opts{server} if defined($opts{server});
-$user = $1 if $server =~ /(\w+)\@[\w\d\.]+/;
-
-$packager = $opts{packager} if defined($opts{packager});
-
-# Go ahead and build an SRPM...
-
-my $ovidignore = '--ignore ' . join ('--ignore ', qw/libwww/);
-
-
-for my $file (@ARGV) {
- my ($name,$version,$type);
-
- if ($file =~ /^(?:.*\/)?(.*)-(?:v\.?)?([^-]+)\.(tar)\.(?:gz|bz2)$/) {
- $name = $1;
- $version = $2;
- $type = $3;
- } elsif ($file =~ /^(?:.*\/)?(.*)-(?:v\.?)?([^-]+)\.tgz$/) {
- $name = $1;
- $version = $2;
- $type = 'tar';
- } elsif ($file =~ /^(?:.*\/)?(.*)-(?:v\.?)?([^-]+)\.(zip)$/) {
- $name = $1;
- $version = $2;
- $type = $3;
- } else {
- # keep things happy if we get "Foo-Bar" instead of "Foo::Bar"
- $file =~ s/-/::/g;
- $name = $file;
- $version = undef;
- $type = 'module';
- }
-
- if ($type eq 'module') {
- my $fluteopts = '';
- $fluteopts .= "--packager='$packager' " if defined($packager);
- $fluteopts .= "--release='$opts{release}' " if defined($opts{release});
- do_cmd("ssh $user\@$server \"ovid --deps $ovidignore $name | tail -1 | $remdeps/ovid2flute $fluteopts | /bin/sh\"");
- } else {
- my $absfile = abs_path($file);
- my $fname = basename($file);
- die "Packager name and e-mail required" if !defined($packager);
- die "RPM release string required" if !defined($opts{release});
- do_cmd("scp $absfile $user\@$server:/home/$user/$fname");
-# do_cmd("ssh $user\@$server 'cpanflute2 --just-spec --noperlreqs --email=\\\"$packager\\\" --release=$opts{release} /home/$user/$fname > /home/$user/work/redhat/SPECS/$name.spec;'");
-# do_cmd("ssh $user\@$server 'perl -pi -e \\\"s/perl\(perl\)/perl/g\\\" /home/$user/work/redhat/SPECS/$name.spec;'");
-# do_cmd("ssh $user\@$server 'rpmbuild -bs --nodeps --define \\\"_sourcedir /home/$user/\\\" --define \\\"_srcrpmdir /home/$user/work/redhat/SRPMS\\\" /home/$user/work/redhat/SPECS/$name.spec'");
- open SCRIPT, ">/home/$user/makesrpm" or die "Can't create SRPM construction script: ", $!;
- print SCRIPT "#!/bin/sh\n\n";
- print SCRIPT "cpanflute2 --just-spec --noperlreqs --email='$packager' --release=$opts{release} /home/$user/$fname > $rpmtopdir/SPECS/$name.spec;\n";
- print SCRIPT "perl -pi -e 's/perl(perl)/perl/g' $rpmtopdir/SPECS/$name.spec\n";
- print SCRIPT "rpmbuild -bs --nodeps --define '_sourcedir /home/$user/' --define '_srcrpmdir $rpmtopdir/SRPMS' $rpmtopdir/SPECS/$name.spec\n";
- close SCRIPT or die "Can't close SRPM construction script: ", $!;
- chmod(0711, "/home/$user/makesrpm");
- do_cmd("scp /home/$user/makesrpm $user\@$server:/home/$user/makesrpm");
- do_cmd("ssh $user\@$server /home/$user/makesrpm");
- }
- my $olddir = getcwd();
- do_cmd("$buildsys/build-freeside");
-# if (-x "$buildsys/refresh-repo") {
- do_cmd("$buildsys/refresh-repo");
-# } else {
-# do_cmd("ssh $user\@$server $rembuild/refresh-repo");
-# }
-}
-
-sub do_cmd {
- my $cmd = shift;
-
- print "$cmd\n";
- `$cmd` if !exists($opts{dryrun});
-}
-
-1;
-