Hello community,
here is the log from the commit of package obs-service-source_validator for
openSUSE:Factory checked in at 2017-09-13 21:37:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/obs-service-source_validator (Old)
and /work/SRC/openSUSE:Factory/.obs-service-source_validator.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "obs-service-source_validator"
Wed Sep 13 21:37:26 2017 rev:39 rq:523716 version:0.6+git20170830.0775ae8
Changes:
--------
---
/work/SRC/openSUSE:Factory/obs-service-source_validator/obs-service-source_validator.changes
2017-08-21 11:35:17.528945766 +0200
+++
/work/SRC/openSUSE:Factory/.obs-service-source_validator.new/obs-service-source_validator.changes
2017-09-13 21:37:34.897019519 +0200
@@ -1,0 +2,12 @@
+Wed Aug 30 08:00:54 UTC 2017 - [email protected]
+
+- Update to version 0.6+git20170830.0775ae8:
+ * Fix typo in egrep _service
+ * Refactor helpers/spec_sources into helpers/spec_query
+ * Use helpers/spec_query in 20-files-present-and-referenced
+ * Do not use rpm --specfile to query the subpackage names
+ * Remove unused RPMBUILD variable
+ * Do not use a grouping
+ * Silence another build warning wrt issue #54
+
+-------------------------------------------------------------------
Old:
----
obs-service-source_validator-0.6+git20170811.369eb25.tar.bz2
New:
----
obs-service-source_validator-0.6+git20170830.0775ae8.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ obs-service-source_validator.spec ++++++
--- /var/tmp/diff_new_pack.n5HSfv/_old 2017-09-13 21:37:37.084711711 +0200
+++ /var/tmp/diff_new_pack.n5HSfv/_new 2017-09-13 21:37:37.088711149 +0200
@@ -21,7 +21,7 @@
License: GPL-2.0+
Group: Development/Tools/Building
Url: https://github.com/openSUSE/obs-service-source_validator
-Version: 0.6+git20170811.369eb25
+Version: 0.6+git20170830.0775ae8
Release: 0
# use osc service dr to update
Source: %{name}-%{version}.tar.bz2
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.n5HSfv/_old 2017-09-13 21:37:37.140703833 +0200
+++ /var/tmp/diff_new_pack.n5HSfv/_new 2017-09-13 21:37:37.140703833 +0200
@@ -1,4 +1,4 @@
<servicedata>
<service name="tar_scm">
<param
name="url">git://github.com/openSUSE/obs-service-source_validator.git</param>
- <param
name="changesrevision">369eb257d38d9fdd003f65e50b3bc45a15bc2f48</param></service></servicedata>
\ No newline at end of file
+ <param
name="changesrevision">0775ae82992d76c823d8cb9044f2f3a9f9a1a250</param></service></servicedata>
\ No newline at end of file
++++++ debian.dsc ++++++
--- /var/tmp/diff_new_pack.n5HSfv/_old 2017-09-13 21:37:37.160701020 +0200
+++ /var/tmp/diff_new_pack.n5HSfv/_new 2017-09-13 21:37:37.160701020 +0200
@@ -1,6 +1,6 @@
Format: 1.0
Source: obs-service-source-validator
-Version: 0.6+git20170811.369eb25-0
+Version: 0.6+git20170830.0775ae8-0
Binary: obs-service-source-validator
Maintainer: Hib Eris <[email protected]>
Architecture: all
++++++ obs-service-source_validator-0.6+git20170811.369eb25.tar.bz2 ->
obs-service-source_validator-0.6+git20170830.0775ae8.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/obs-service-source_validator-0.6+git20170811.369eb25/20-files-present-and-referenced
new/obs-service-source_validator-0.6+git20170830.0775ae8/20-files-present-and-referenced
---
old/obs-service-source_validator-0.6+git20170811.369eb25/20-files-present-and-referenced
2017-08-11 13:08:58.000000000 +0200
+++
new/obs-service-source_validator-0.6+git20170830.0775ae8/20-files-present-and-referenced
2017-08-30 09:58:09.000000000 +0200
@@ -15,8 +15,6 @@
RETURN=0
-RPMBUILD=rpm
-test -x /usr/bin/rpmbuild && RPMBUILD=rpmbuild
#
# cleanup_and_exit
@@ -54,33 +52,17 @@
;;
esac
-unique_sources() {
- local TMP="$1"
- rm -f "$TMP/unique.sed"
- for i in "source" "patch"; do
- grep -i -n "^$i[[:digit:]]*\s*:" "$2" | while IFS=" :" read N
L; do
- # the "i" flag is a GNU extension
- echo "$N s/^$i/$i$N/i" >> "$TMP/unique.sed"
- done
- done
- sed -f "$TMP/unique.sed" -i "$2"
-}
-
for i in $DIR_TO_CHECK/*.spec ; do
test -f "$i" || continue
- sed -e 's/^\s*//' \
- -e '/^%if/d' \
- -e '/^%else/d' \
- -e '/^%endif/d' "$i" > "$TMPDIR/tmp.spec"
-
- unique_sources "$TMPDIR" "$TMPDIR/tmp.spec"
-
- $HELPERS_DIR/spec_sources "$TMPDIR/tmp.spec" "$TMPDIR/sources" \
- 2>"$TMPDIR/sources.err" || cleanup_and_exit 1
+ $HELPERS_DIR/spec_query --specfile "$i" --print-sources \
+ --no-conditionals --unique-sources \
+ >> "$TMPDIR/sources" 2>"$TMPDIR/sources.err"
# ignore expand errors with macro scripts
- sed -i "/can't expand %\(...\)/d" "$TMPDIR/sources.err"
+ sed -i "/can't expand %(...)/d" "$TMPDIR/sources.err"
+ # ignore macro nesting reported by build script
+ sed -i "/^Warning: spec file parser line [0-9]\+: macro too deeply
nested$/d" "$TMPDIR/sources.err"
if [ -s "$TMPDIR/sources.err" ]; then
- echo "Unable to extract sources from spec - spec_sources failed:"
+ echo "Unable to extract sources from spec - spec_query failed:"
cat "$TMPDIR/sources.err"
cleanup_and_exit 1
fi
@@ -125,7 +107,7 @@
xmllint --format $i > $TMPDIR/_service
if egrep -q "service .*mode=." $TMPDIR/_service \
- && ! egrep -q "service
.*mode=.(disabled|buildtime|explicit|localonly" \
+ && ! egrep -q "service
.*mode=.(disabled|buildtime|explicit|localonly)" \
$TMPDIR/_service; then
echo "(W) openSUSE: projects only allow 'disabled',
'buildtime', 'explicit' or 'localonly' services."
fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/obs-service-source_validator-0.6+git20170811.369eb25/70-baselibs
new/obs-service-source_validator-0.6+git20170830.0775ae8/70-baselibs
--- old/obs-service-source_validator-0.6+git20170811.369eb25/70-baselibs
2017-08-11 13:08:58.000000000 +0200
+++ new/obs-service-source_validator-0.6+git20170830.0775ae8/70-baselibs
2017-08-30 09:58:09.000000000 +0200
@@ -18,10 +18,12 @@
# PASS if there is no baselibs.conf
[ -f $DIR_TO_CHECK/baselibs.conf ] || exit 0
-# PASS if we have trouble parsing the .spec file
-rpm -q --specfile $DIR_TO_CHECK/*.spec >/dev/null 2>&1 || exit 0
-
-BUILTBINARIES=($(rpm -q --qf "%{name}\n" --specfile $DIR_TO_CHECK/*.spec))
+BUILTBINARIES=()
+for i in "$DIR_TO_CHECK"/*.spec; do
+ # PASS if we have trouble parsing the .spec file
+ BUILTBINARIES+=($($HELPERS_DIR/spec_query --specfile "$i"
--print-subpacks \
+ --no-conditionals --unique-sources)) || exit 0
+done
# add known keywords from baselibs specification
BUILTBINARIES+=('arch' 'targetname' 'targettype')
BASELIBSREF=$(grep -o "^[a-zA-Z0-9.+_-]\+" $DIR_TO_CHECK/baselibs.conf)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/obs-service-source_validator-0.6+git20170811.369eb25/helpers/spec_query
new/obs-service-source_validator-0.6+git20170830.0775ae8/helpers/spec_query
--- old/obs-service-source_validator-0.6+git20170811.369eb25/helpers/spec_query
1970-01-01 01:00:00.000000000 +0100
+++ new/obs-service-source_validator-0.6+git20170830.0775ae8/helpers/spec_query
2017-08-30 09:58:09.000000000 +0200
@@ -0,0 +1,140 @@
+#!/usr/bin/perl
+
+BEGIN {
+ unshift @INC, '/usr/lib/build';
+}
+
+use strict;
+use warnings;
+
+use Build;
+use Build::Rpm;
+
+# Used by the 20-files-present-and-referenced and 70-baselibs scripts
+# to query certain information from the specfile.
+
+sub prepare_spec {
+ my ($fn, $no_conditionals, $unique_sources, $disambiguate_sources) = @_;
+ return $fn unless $no_conditionals;
+ my $spec;
+ open(F, '<', $fn) || die("open: $!\n");
+ my %seen;
+ my $dtags;
+ while (<F>) {
+ next if /^\s*%(?:if|else|endif)/;
+ chomp;
+ if (($unique_sources || $disambiguate_sources) &&
+ /^\s*((?:Source|Patch)\d*)\s*:(.*)$/i) {
+ my $tag = lc($1);
+ if ($seen{$tag}) {
+ push @$spec, "$tag: $2";
+ push @{$dtags->{$tag}}, \$spec->[-1];
+ next;
+ }
+ $seen{$tag} = 1;
+ }
+ push @$spec, $_;
+ }
+ close(F) || die("close: $!\n");
+ my @amb = sort(keys(%$dtags));
+ die('Ambiguous tags: ' . join(', ', @amb) . "\n") if $unique_sources && @amb;
+ return $spec unless $disambiguate_sources;
+ # make duplicate source/patch tags unique (such duplicates probably
+ # only occur in a "pathological" specfile...)
+ for my $tag (sort keys(%$dtags)) {
+ my $cnt = 0;
+ for my $lref (@{$dtags->{$tag}}) {
+ $cnt++ while ($seen{"$tag$cnt"});
+ $$lref =~ s/^$tag/$tag$cnt/;
+ $seen{"$tag$cnt"} = 1;
+ }
+ }
+ return $spec;
+}
+
+sub parse {
+ my ($fn, $arch, $no_conditionals, $unique_sources,
+ $disambiguate_sources) = @_;
+ my $spec = prepare_spec($fn, $no_conditionals, $unique_sources,
+ $disambiguate_sources);
+ my $config = Build::read_config($arch, []);
+ $config->{'warnings'} = 1;
+ my $descr = Build::Rpm::parse($config, $spec);
+ die("unable to parse specfile: $fn\n") unless $descr;
+ my @skeys = sort keys(%$descr);
+ $descr->{'sources'} = [map {$descr->{$_}} grep {/^source/} @skeys];
+ $descr->{'patches'} = [map {$descr->{$_}} grep {/^patch/} @skeys];
+ $descr->{'icons'} = [map {@{$descr->{$_}}} grep {/^icon/} @skeys];
+ return $descr;
+}
+
+sub print_subpacks {
+ my ($descr) = @_;
+ print "@{$descr->{'subpacks'} || []} ";
+ print "\n";
+}
+
+sub print_sources {
+ my ($descr) = @_;
+ print "@{$descr->{'sources'}} " if @{$descr->{'sources'}};
+ print "@{$descr->{'patches'}} " if @{$descr->{'patches'}};
+ print "@{$descr->{'icons'}}" if @{$descr->{'icons'}};
+ print "\n";
+}
+
+sub usage {
+ my ($ret) = @_;
+ print <<EOF;
+Usage: $0 --specfile <specfile> [<options>]
+Options:
+ --specfile <specfile>: the specfile that should be queried
+ --arch <arch>: arch that is used during parsing (default: noarch)
+ --no-conditionals: do not take %if* conditionals into account during
+ parsing
+ --unique-sources: fail if source/patch tags are not unique
+ --disambiguate-sources: disambiguate non-unique source/patch tags (only
+ needed for a "pathological" specfile)
+ --print-subpacks: print names of the main package and all subpackages
+ --print-sources: print names of all sources, patches, and icons
+
+EOF
+ exit($ret);
+}
+
+my $specfile;
+my $arch = 'noarch';
+my $print_subpacks;
+my $print_sources;
+my $no_conditionals;
+my $unique_sources;
+my $disambiguate_sources;
+
+while (@ARGV) {
+ my $opt = shift @ARGV;
+ if ($opt eq '--specfile') {
+ $specfile = shift @ARGV;
+ usage(1) unless $specfile;
+ } elsif ($opt eq '--arch') {
+ $arch = shift @ARGV;
+ usage(1) unless $arch;
+ } elsif ($opt eq '--print-subpacks') {
+ $print_subpacks = 1;
+ } elsif ($opt eq '--print-sources') {
+ $print_sources = 1;
+ } elsif ($opt eq '--no-conditionals') {
+ $no_conditionals = 1;
+ } elsif ($opt eq '--unique-sources') {
+ $unique_sources = 1;
+ } elsif ($opt eq '--disambiguate-sources') {
+ $disambiguate_sources = 1;
+ } elsif ($opt eq '--help') {
+ usage(0);
+ } else {
+ usage(1);
+ }
+}
+
+my $descr = parse($specfile, $arch, $no_conditionals, $unique_sources,
+ $disambiguate_sources);
+print_subpacks($descr) if $print_subpacks;
+print_sources($descr) if $print_sources;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/obs-service-source_validator-0.6+git20170811.369eb25/helpers/spec_sources
new/obs-service-source_validator-0.6+git20170830.0775ae8/helpers/spec_sources
---
old/obs-service-source_validator-0.6+git20170811.369eb25/helpers/spec_sources
2017-08-11 13:08:58.000000000 +0200
+++
new/obs-service-source_validator-0.6+git20170830.0775ae8/helpers/spec_sources
1970-01-01 01:00:00.000000000 +0100
@@ -1,44 +0,0 @@
-#!/usr/bin/perl
-
-BEGIN {
- unshift @INC, '/usr/lib/build';
-}
-
-use strict;
-use warnings;
-
-use Build;
-
-# Used by the 20-files-present-and-referenced script to extract the
-# sources, patches, and icons from a spec file.
-# Input: spec file, sources file
-# The extracted sources, patches, and icons are written/appended to the
-# sources file (one single line; each entry is separated by a whitespace).
-
-sub parse {
- my ($fn) = @_;
- # use noarch, because the spec shouldn't contain arch specific conditionals
- my $config = Build::read_config('noarch', []);
- $config->{'warnings'} = 1;
- my $descr = Build::parse($config, $fn);
- # for now, we assume that $fn is a spec file (we could generalize
- # this...)
- $descr->{'sources'} = [map {$descr->{$_}} grep {/^source/} keys(%$descr)];
- $descr->{'patches'} = [map {$descr->{$_}} grep {/^patch/} keys(%$descr)];
- $descr->{'icons'} = [map {@{$descr->{$_}}} grep {/^icon/} keys(%$descr)];
- return $descr;
-}
-
-sub write_sources {
- my ($descr, $sfn) = @_;
- open(F, '>>', $sfn) || die("open: $!\n");
- print F "@{$descr->{'sources'}} " if @{$descr->{'sources'}};
- print F "@{$descr->{'patches'}} " if @{$descr->{'patches'}};
- print F "@{$descr->{'icons'}}" if @{$descr->{'icons'}};
- close(F) || die("close: $!\n");
-}
-
-my ($dfn, $sfn) = @ARGV;
-die("usage: $0 descr sources\n") unless $dfn && $sfn;
-my $descr = parse($dfn);
-write_sources($descr, $sfn);