Handle hostnames with upper-case letters
[webmin.git] / makemodulerpm.pl
index 7b26c1a..035cbab 100755 (executable)
@@ -14,6 +14,7 @@ $licence = "Freeware";
 $release = 1;
 $< = $>;               # If running setuid
 $ENV{'PATH'} = "/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin";
+$allow_overwrite = 0;
 
 # Parse command-line args
 while(@ARGV) {
@@ -60,6 +61,12 @@ while(@ARGV) {
        elsif ($a eq "--allow-overwrite") {
                $allow_overwrite = 1;
                }
+       elsif ($a eq "--sign") {
+               $sign = 1;
+               }
+       elsif ($a eq "--epoch") {
+               $epoch = shift(@ARGV);
+               }
        elsif ($a =~ /^\-\-/) {
                print STDERR "Unknown option $a\n";
                exit(1);
@@ -86,6 +93,7 @@ if (!$dir) {
        print STDERR "                        [--provides provides]\n";
        print STDERR "                        [--usermin]\n";
        print STDERR "                        [--release number]\n";
+       print STDERR "                        [--epoch number]\n";
        print STDERR "                        [--target-dir directory]\n";
        print STDERR "                        [--dir directory-in-package]\n";
        print STDERR "                        [--allow-overwrite]\n";
@@ -107,6 +115,7 @@ if ($mod eq "." || $mod eq "..") {
 $spec_dir = "$basedir/SPECS";
 $rpm_source_dir = "$basedir/SOURCES";
 $rpm_dir = "$basedir/RPMS/noarch";
+$source_rpm_dir = "$basedir/SRPMS";
 if (!-d $spec_dir || !-d $rpm_source_dir || !-d $rpm_dir) {
        die "RPM directory $basedir is not valid";
        }
@@ -204,6 +213,7 @@ $rdeps = join(" ", @rdeps, @extrareqs);
 $providesheader = $provides ? "Provides: $provides" : undef;
 $vendorheader = $vendor ? "Vendor: $vendor" : undef;
 $urlheader = $url ? "URL: $url" : undef;
+$epochheader = $epoch ? "Epoch: $epoch" : undef;
 open(SPEC, ">$spec_dir/$prefix$mod.spec");
 print SPEC <<EOF;
 %define __spec_install_post %{nil}
@@ -221,6 +231,7 @@ Source: $mod.tar.gz
 Vendor: Jamie Cameron
 BuildRoot: /tmp/%{name}-%{version}
 BuildArchitectures: noarch
+$epochheader
 $providesheader
 $vendorheader
 $urlheader
@@ -264,7 +275,7 @@ if [ "$depends" != "" -a "$rpmdepends" != 1 ]; then
        done
 fi
 # Check if this module is already installed
-if [ -d /usr/libexec/$prog/$mod -a "\$1" = "1" -a "\$allow_overwrite" != "1" ]; then
+if [ -d /usr/libexec/$prog/$mod -a "\$1" = "1" -a "$allow_overwrite" != "1" ]; then
        echo "This $ucprog module is already installed on your system."
        exit 1
 fi
@@ -345,6 +356,12 @@ close(SPEC);
 $cmd = -x "/usr/bin/rpmbuild" ? "/usr/bin/rpmbuild" : "/bin/rpm";
 system("$cmd -ba $spec_dir/$prefix$mod.spec") && exit;
 unlink("$rpm_source_dir/$mod.tar.gz");
+
+# Sign if requested
+if ($sign) {
+       system("rpm --resign $rpm_dir/$prefix$mod-$ver-$release.noarch.rpm $source_rpm_dir/$prefix$mod-$ver-$release.src.rpm");
+       }
+
 if ($target_dir =~ /:/) {
        # scp to dest
        system("scp $rpm_dir/$prefix$mod-$ver-$release.noarch.rpm $target_dir/$prefix$mod-$ver-$release.noarch.rpm");