Hello community,
here is the log from the commit of package brp-extract-appdata for
openSUSE:Factory checked in at 2012-02-16 16:11:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/brp-extract-appdata (Old)
and /work/SRC/openSUSE:Factory/.brp-extract-appdata.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "brp-extract-appdata", Maintainer is ""
Changes:
--------
New Changes file:
--- /dev/null 2010-08-26 16:28:41.000000000 +0200
+++
/work/SRC/openSUSE:Factory/.brp-extract-appdata.new/brp-extract-appdata.changes
2012-02-16 16:11:31.000000000 +0100
@@ -0,0 +1,10 @@
+-------------------------------------------------------------------
+Thu Feb 16 13:07:10 UTC 2012 - [email protected]
+
+- adding an escape function to please vuntz
+
+-------------------------------------------------------------------
+Tue Feb 14 10:52:01 UTC 2012 - [email protected]
+
+- initial package
+
New:
----
brp-extract-appdata.changes
brp-extract-appdata.sh
brp-extract-appdata.spec
create-appdata-xml.pl
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ brp-extract-appdata.spec ++++++
#
# spec file for package update-desktop-files
#
# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
Name: brp-extract-appdata
Version: 2012.02.13
Release: 0
Summary: Extract appdata.xml
License: MIT
Group: Development/Tools/Building
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Source0: %{name}.sh
Source1: create-appdata-xml.pl
BuildArch: noarch
%description
Extract appdata.xml from all .deskop files found in build root
%prep
%build
%install
install -m0755 -D %SOURCE0
$RPM_BUILD_ROOT%_rpmconfigdir/brp-suse.d/brp-72-extract-appdata
install -m0755 -D %SOURCE1
$RPM_BUILD_ROOT/usr/lib/build/checks/72-translate-appdata
%files
%defattr(-,root,root)
%_rpmconfigdir/brp-suse.d
/usr/lib/build
%changelog
++++++ brp-extract-appdata.sh ++++++
#! /bin/sh
# Copyright 2012 Stephan Kulow, SUSE Linux Products GmbH
#
# find files and extract them for later processing
#
BASEDIR=`dirname $RPM_SOURCE_DIR`/OTHER
set -e
if ! test -f /.buildenv; then
# this looks fishy, skip it
echo "WARNING: I better not trim without a /.buildenv around"
exit 0
fi
if ! test -w $BASEDIR; then
echo "WARNING: Can't write to $BASEDIR, skipping"
exit 0
fi
cd /$RPM_BUILD_ROOT
find ./usr/share/applications/ \
-name *.desktop 2>/dev/null | while read FILE; do
# save for backup
NFILE=${FILE#.}
echo "<<$NFILE>>" >> $BASEDIR/$RPM_PACKAGE_NAME.applications
cat $FILE >> $BASEDIR/$RPM_PACKAGE_NAME.applications
done
++++++ create-appdata-xml.pl ++++++
#!/usr/bin/perl -w
# search for files packaged more than once
# it is an error if such a file exists but the packages do not conflict
#
use strict;
use Data::Dumper;
use File::Glob;
sub _e {
my ($d) = @_;
$d =~ s/&/&/sg;
$d =~ s/</</sg;
$d =~ s/>/>/sg;
$d =~ s/"/"/sg;
return $d;
}
my $build_root = $::ENV{BUILD_ROOT} || '/';
my $TOPDIR = '/usr/src/packages';
$TOPDIR = '/.build.packages' if -d "$build_root/.build.packages";
open (ALL_RPMS, "chroot $build_root find $TOPDIR/RPMS/ -name \"*.rpm\" |");
my @rpms = <ALL_RPMS>;
chomp @rpms;
close ALL_RPMS;
my @appdata = glob("$build_root$TOPDIR/OTHER/*.applications");
if (@appdata != 1) {
print STDERR "DEBUG: there is not a single *.applications file\n";
exit 0;
}
my $appdata = shift @appdata;
open(APPDATA, "$appdata") || die "can't open $appdata";
my $currentfile = '';
my $indesktopentry = 0;
my %apphash;
while ( <APPDATA> ) {
chomp;
if (m/^<<(.*)>>$/) {
$currentfile = $1;
next;
}
unless ($currentfile) {
print "ERROR: haven't seen a file before $_";
exit 0;
}
if (m/^\[Desktop Entry\]\s*$/) {
if ($indesktopentry) {
print "ERROR: 2 desktop entries? I'm out";
exit 0;
}
$indesktopentry = 1;
next;
} elsif (m/^\[/) {
$indesktopentry = 0;
next;
}
next unless $indesktopentry;
next unless (m/^([^=]*)=(.*)$/);
my $key = lc($1);
my $val = $2;
$apphash{$currentfile}->{$key} = $val;
}
for my $rpm (@rpms) {
next if ($rpm =~ m/-debuginfo/ || $rpm =~ m/-debugsource/);
open (FILES, "chroot $build_root rpm -qp --qf '[%{NAME} %{FILENAMES}\n]'
$rpm|");
my @files = <FILES>;
chomp @files;
close FILES;
open (URL, "chroot $build_root rpm -qp --qf '%{URL}' $rpm|");
chomp(my $url = <URL>);
close URL;
# ignore empty rpm as rpmlint will catch them
@files = grep {!/^\(none\)/} @files;
for my $file (@files) {
next unless $file =~ /^(\S+) (.*)$/;
my $rpmname = $1;
my $filename = $2;
if (defined $apphash{$filename}) {
$apphash{$filename}->{pkgname} = $rpmname;
$apphash{$filename}->{homepage} ||= $url;
print "DEBUG " . Dumper($apphash{$filename});
}
}
}
open(APPDATA, ">", "$appdata.xml") || die "can't write to $appdata.xml";
print APPDATA "<?xml version='1.0'?>\n";
print APPDATA "<applications version='0.1'>\n";
while (my ($file, $hash) = each(%apphash)) {
print APPDATA " <application>\n";
print APPDATA " <id type='application'>" . _e($file) . "</id>\n";
print APPDATA " <pkgname>" . _e($hash->{pkgname}) . "</pkgname>\n";
if ($hash->{name}) {
print APPDATA " <name>" . _e($hash->{name}) . "</name>\n";
}
if ($hash->{comment}) {
print APPDATA " <summary>" . _e($hash->{comment}) . "</summary>\n";
}
if ($hash->{keywords}) {
print APPDATA " <keywords>\n";
for my $keyword (split(/\s*;\s*/, $hash->{keywords})) {
print APPDATA " <keyword>" . _e($keyword) . "</keyword>\n";
}
print APPDATA " </keywords>\n";
}
if ($hash->{icon}) {
print APPDATA " <icon type='local'>" . _e($hash->{icon}) . "</icon>\n";
}
print APPDATA " <appcategories>\n";
for my $keyword (split(/\s*;\s*/, $hash->{categories})) {
print APPDATA " <appcategory>" . _e($keyword) . "</appcategory>\n";
}
print APPDATA " </appcategories>\n";
if ($hash->{mimetype}) {
print APPDATA " <mimetypes>\n";
for my $keyword (split(/\s*;\s*/, $hash->{mimetype})) {
print APPDATA " <mimetype>" . _e($keyword) . "</mimetype>\n";
}
print APPDATA " </mimetypes>\n";
}
if ($hash->{homepage}) {
print APPDATA " <url type='homepage'>". _e($hash->{homepage}) .
"</url>\n"
}
print APPDATA " </application>\n";
}
print APPDATA "</applications>\n";
close(APPDATA);
# just for debug
open(APPDATA, "<", "$build_root$TOPDIR/OTHER/appdata.xml");
while ( <APPDATA> ) {
print "XML: $_";
}
close(APPDATA);
# we don't need to keep this around - beside for debugging
unlink $appdata;
exit 0;
--
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]