From: Lars Kurth
Date: Fri, 1 Sep 2017 17:02:51 +0000 (+0100)
Subject: Ported the scripts to use lib/myoptions.pm
X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=4b8bcd3639d2b5b1fa69ea989910718bfbf6a31a;p=people%2Flarsk%2Fxen-release-scripts.git
Ported the scripts to use lib/myoptions.pm
---
diff --git a/README b/README
index eaaac92..e255c52 100644
--- a/README
+++ b/README
@@ -13,6 +13,8 @@ To keep things clean, use the following directory structure
see steps 1-5 in match-xsa]
- xsa [git repo, optional]
+This is set up as the default. You can also set defaults for all scripts
+in the config/config file
Prerequisites
-------------
@@ -20,7 +22,10 @@ match-xsa and xen-release-logs, require perl and the following perl libraries
libfile-slurp-perl
libfile-spec-perl
+ libfile-config-simple
+On Mac: see https://stackoverflow.com/questions/12027327/
+ how-to-install-json-pm-perl-module-on-osx
Tested on
---------
@@ -54,6 +59,10 @@ This document is written for specific users
Logfiles, --version, --major, --since, --until and --logroot
------------------------------------------------------------
+Note:
+* You can also use --minor-since instead of --since
+* You can also use --minor-until instead of --until
+
The tools xen-release-logs, match-xsa and make-webpage use the following
common options:
diff --git a/make-webpage b/make-webpage
index 9fbf370..0bfcb5a 100755
--- a/make-webpage
+++ b/make-webpage
@@ -1,54 +1,39 @@
#!/usr/bin/perl
# Usage
-# $0 --version 4 --major 7 --since 0 --until 1 [--getlogs] [--logroot dir] --xsastart start --xsaend end
-# Logs will be put into the log directory under "webpage.html"
+# See lib/myoptions.pl
use strict;
use warnings;
-use 5.010;
-use Getopt::Long qw(GetOptions);
use Cwd;
use File::Slurp;
use Text::Diff;
use File::Spec;
-my $GETLOGS=0;
-my $VERSION;
-my $MAJOR;
-my $SINCE="none";
-my $UNTIL="stable";
-my $XSASTART;
-my $XSAEND;
-my $LOGROOT = File::Spec->canonpath(cwd()."/../xen-release-logs" );
-
-GetOptions(
- 'getlogs' => \$GETLOGS,
- 'version=s' => \$VERSION,
- 'major=s' => \$MAJOR,
- 'since=s' => \$SINCE,
- 'until=s' => \$UNTIL,
- 'xsastart=s' => \$XSASTART,
- 'xsaend=s' => \$XSAEND,
- 'logroot=s' => \$LOGROOT,
-) or
-die "Usage: $0 --version 4 --major 7 --since 0 --until 1 [--getlogs] [--logroot dir] --xsastart start --xsaend end\n";
-
-if ($GETLOGS) {
- system("./xen-release-logs --version $VERSION --major $MAJOR --since $SINCE --until $UNTIL --logroot $LOGROOT");
-}
+use FindBin;
+use lib $FindBin::Bin.'/lib';
+
+use MyOptions;
-# Calculate log file names
-my $short="$VERSION$MAJOR$SINCE-$UNTIL";
+my %opt = options_makewebpage();
-# Directories
+# Copy Variables from Options
+my $GETLOGS = $opt{'GETLOGS'};
+my $VERSION = $opt{'VERSION'};
+my $MAJOR = $opt{'MAJOR'};
+my $SINCE = $opt{'SINCE'};
+my $UNTIL = $opt{'UNTIL'};
+my $LOGDIR = $opt{'LOGDIR'};
+my $SHORT = $opt{'SHORT'};
+my $XSASTART = $opt{'XSASTART'};
+my $XSAEND = $opt{'XSAEND'};
+my $LOGROOT = $opt{'LOGROOT'};
# Output
-my $dir=$LOGROOT;
-my $output="$dir/logs-$short/webpage.html";
+my $OUTPUTFILE = $opt{'OUTPUTFILE'};
# Input
-my $xen_log="$dir/logs-$short/xen_$short-pretty.log";
-my $qemuu_log="$dir/logs-$short/qemuu_$short-pretty.log";
-my $qemut_log="$dir/logs-$short/qemut_$short-pretty.log";
+my $xen_log = "$LOGDIR/xen_$SHORT-pretty.log";
+my $qemuu_log = "$LOGDIR/qemuu_$SHORT-pretty.log";
+my $qemut_log = "$LOGDIR/qemut_$SHORT-pretty.log";
my $s;
my $releaseshort=$VERSION.".".$MAJOR;
@@ -117,4 +102,4 @@ $s .= 'for details related to Xen Project security advisories.
'."\n";
$s .= 'We recommend all users of the '.$releaseshort.' stable series to update to this latest point release.
'."\n";
# WRITE REPORT
-write_file($output, $s);
\ No newline at end of file
+write_file($OUTPUTFILE, $s);
diff --git a/match-xsa b/match-xsa
index 1b4c1d1..986caa8 100755
--- a/match-xsa
+++ b/match-xsa
@@ -1,92 +1,44 @@
#!/usr/bin/perl
# Usage
-# $0 --version 4 --major 7 --since 0 [--until 1]
-# [--getlogs] [--smart] [--debug] [--html]
-# [--logroot directory]
-# [--xsadir xsadir] --xsa xsafile
+# See lib/myoptions.pl
use strict;
use warnings;
-use 5.010;
-use Getopt::Long qw(GetOptions);
use Cwd;
use File::Slurp;
use File::Spec;
-my $GETLOGS=0;
-my $SMART=0;
-my $DEBUG=0;
-my $HTML=0;
-my $VERSION;
-my $MAJOR;
-my $SINCE="none";
-my $UNTIL="stable";
-my $XSAFILE;
-my $XSADIR;
-my $XSAFETCH;
-my $LOGROOT = "../xen-release-logs";
-
-GetOptions(
- 'version=s' => \$VERSION,
- 'major=s' => \$MAJOR,
- 'since=s' => \$SINCE,
- 'until=s' => \$UNTIL,
- 'xsa=s' => \$XSAFILE,
- 'xsadir=s' => \$XSADIR,
- 'logroot=s' => \$LOGROOT,
- 'getlogs' => \$GETLOGS,
- 'smart' => \$SMART,
- 'debug' => \$DEBUG,
- 'html' => \$HTML,
-) or
-die "Usage: $0 --version ".
- " --major ".
- " [--since ]".
- " [--until ]".
- " [--smart] [--debug] [--html]".
- " [--getlogs]".
- " [--xsadir xsadir (default=../xsaweb; files fetched from".
- " http://xenbits.xenproject.org/xsa/)]".
- " [--logroot directory (default=../xen_release_logs)]".
- " --xsa xsafile\n";
-
-if ($GETLOGS) {
- system("./xen-release-logs --version $VERSION --major $MAJOR --since ".
- "$SINCE --until $UNTIL --logroot $LOGROOT");
-}
-
-# Calculate log file names
-my $short="$VERSION$MAJOR$SINCE-$UNTIL";
-
-# Set up XSADIR and XSAFETCH, if not set
-if (!$XSADIR) {
- $XSAFETCH = "https://xenbits.xenproject.org/xsa/";
- $XSADIR = "../xsaweb";
- system("rm -rf $XSADIR");
- mkdir $XSADIR;
-}
-
-# Make relative paths absolute
-$LOGROOT = File::Spec->rel2abs($LOGROOT);
-$XSADIR = File::Spec->rel2abs($XSADIR);
-
-# Directories
-if (! -e $LOGROOT) {
- mkdir $LOGROOT;
-}
-
-my $debug="$LOGROOT/logs-$short/debug";
-my $xen_git="$LOGROOT/logs-$short/xen";
-my $qemuu_git="$LOGROOT/logs-$short/qemu-xen";
-my $qemut_git="$LOGROOT/logs-$short/qemu-xen-traditional";
-my $xsa=$XSADIR;
-
-if ($DEBUG != 0) {
- system("rm -rf $debug");
- mkdir $debug;
-}
-
-# Get the xsafile
+use FindBin;
+use lib $FindBin::Bin.'/lib';
+
+use MyOptions;
+
+my %opt = options_matchxsa();
+
+# Copy Variables from Options
+my $GETLOGS = $opt{'GETLOGS'};
+my $SMART = $opt{'SMART'};
+my $DEBUG = $opt{'DEBUG'};
+my $HTML = $opt{'HTML'};
+my $VERSION = $opt{'VERSION'};
+my $MAJOR = $opt{'MAJOR'};
+my $SINCE = $opt{'SINCE'};
+my $UNTIL = $opt{'UNTIL'};
+my $LOGDIR = $opt{'LOGDIR'};
+my $SHORT = $opt{'SHORT'};
+my $XSALISTFILE = $opt{'XSALISTFILE'};
+my $XSADIR = $opt{'XSADIR'};
+my $XSAFETCH = $opt{'XSAFETCH'};
+my $LOGROOT = $opt{'LOGROOT'};
+
+my $debug = $opt{'DEBUGDIR'};
+my $xen_git = $opt{'XEN_GIT'} ;
+my $qemuu_git = $opt{'QEMUU_GIT'};
+my $qemut_git = $opt{'QEMUT_GIT'};
+my $xsa = $XSADIR;
+
+
+# Get the xsa list file
my @XSA;
my $XSAs;
my @XSA_PATCH;
@@ -97,7 +49,7 @@ my @XSA_REPO;
my $i=0;
-open(my $data, '<', $XSAFILE) or die "Could not open '$XSAFILE' $!\n";
+open(my $data, '<', $XSALISTFILE) or die "Could not open '$XSALISTFILE' $!\n";
while (my $line = <$data>) {
chomp $line;
@@ -137,13 +89,13 @@ my @LOGQEMUU_hash;
my @LOGQEMUT;
my @LOGQEMUT_hash;
-getlogs("$LOGROOT/logs-$short/xen_$short", \@LOGXEN, \@LOGXEN_hash);
-getlogs("$LOGROOT/logs-$short/qemuu_$short", \@LOGQEMUU, \@LOGQEMUU_hash);
-getlogs("$LOGROOT/logs-$short/qemut_$short", \@LOGQEMUT, \@LOGQEMUT_hash);
+getlogs("$LOGDIR/xen_$SHORT", \@LOGXEN, \@LOGXEN_hash);
+getlogs("$LOGDIR/qemuu_$SHORT", \@LOGQEMUU, \@LOGQEMUU_hash);
+getlogs("$LOGDIR/qemut_$SHORT", \@LOGQEMUT, \@LOGQEMUT_hash);
# Do the actual matching
-print "CHECKING '$XSAFILE' against 'xen_$short.log', 'qemuu_$short.log' ".
- "and 'qemut_$short.log'.\n";
+print "CHECKING '$XSALISTFILE' against 'xen_$SHORT.log', 'qemuu_$SHORT.log' ".
+ "and 'qemut_$SHORT.log'.\n";
print "\n";
for ($i=0; $i <= $XSAs; $i++) {
my $j=0;
diff --git a/xen-release-logs b/xen-release-logs
index 8736462..068e088 100755
--- a/xen-release-logs
+++ b/xen-release-logs
@@ -10,50 +10,27 @@
# xen-release-logs --version 4 --major 7
# xen-release-logs --version 4 --major 7 --until 0
#
-# Additional Options:
-# specify EXISTING log root directory, e.g. ../xen-release-logs
-# xen-release-logs ... --logroot
-#
-# DEBUG OPTIONS
-# xen-release-logs ... --nocheckout
-#
-# Note: Git repos are checked out in directories specific to options
-# This option is mainly useful for debugging the script or when changes
-# to the script are made
+# Further Usage
+# See lib/myoptions.pl
use strict;
use warnings;
-use 5.010;
+use FindBin;
+use lib $FindBin::Bin.'/lib';
+
+use MyOptions;
use Cwd;
-use Getopt::Long qw(GetOptions);
-
-my $USAGE="--version v --major m [--since s] [--until u] [--nocheckout] [--logroot directory]\n";
-
-my $VERSION="none";
-my $MAJOR="none";
-my $UNTIL="stable";
-my $SINCE="none";
-my $NOCHECKOUT=0;
-my $LOGROOT=".";
-
-GetOptions(
- 'version=s' => \$VERSION,
- 'major=s' => \$MAJOR,
- 'since=s' => \$SINCE,
- 'until=s' => \$UNTIL,
- 'logroot=s' => \$LOGROOT,
- 'nocheckout' => \$NOCHECKOUT,
-) or die "Usage: ".$0." ".$USAGE."\n";
-
-# Error checking
-if ($VERSION eq "none" ) {
- die "Usage: ".$0." ".$USAGE."\n".
- " --version not specified\n";
-}
-if ($MAJOR eq "none" ) {
- die "Usage: ".$0." ".$USAGE."\n".
- " --major not specified\n";
-}
+
+my %opt = options_xenreleaselogs();
+
+# Copy Variables from Options
+my $VERSION = $opt{'VERSION'};
+my $MAJOR = $opt{'MAJOR'};
+my $SINCE = $opt{'SINCE'};
+my $UNTIL = $opt{'UNTIL'};
+my $LOGDIR = $opt{'LOGDIR'};
+my $SHORT = $opt{'SHORT'};
+my $NOCHECKOUT = $opt{'NOCHECKOUT'};
# Set up variables
my $MAJOR_LAST=$MAJOR-1;
@@ -61,16 +38,14 @@ my $S;
my $U;
my $L;
-my $SHORT=$VERSION.$MAJOR.$SINCE."-".$UNTIL;
-my $DIR=$LOGROOT."/logs-".$SHORT;
my $SERIES=$VERSION.".".$MAJOR;
my $SERIES_LAST=$VERSION.".".$MAJOR_LAST;
if (!$NOCHECKOUT) {
- system("rm -rf $DIR");
- mkdir $DIR;
+ system("rm -rf $LOGDIR");
+ mkdir $LOGDIR;
}
-chdir $DIR;
+chdir $LOGDIR;
if (!$NOCHECKOUT) {
print "\n";