summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Pashev <pashev.igor@gmail.com>2013-07-14 01:04:53 +0400
committerIgor Pashev <pashev.igor@gmail.com>2013-07-14 01:04:53 +0400
commit390c4aac8fe117ef4f884f932e8891f6b25c9470 (patch)
tree2927f1d6b34c3e798db73a91e9951fdb34b8f2a1
parent97d4d87685ee1e32ba347120a91798289f492ea7 (diff)
downloaddh-smf-390c4aac8fe117ef4f884f932e8891f6b25c9470.tar.gz
Parse installed manifests
-rwxr-xr-xdh_smf26
1 files changed, 24 insertions, 2 deletions
diff --git a/dh_smf b/dh_smf
index f2a0067..db6d183 100755
--- a/dh_smf
+++ b/dh_smf
@@ -9,6 +9,7 @@ dh_smf - install SMF services into package build directories
use strict;
use Debian::Debhelper::Dh_Lib;
use File::Find;
+use XML::Simple;
=head1 SYNOPSIS
@@ -137,10 +138,9 @@ init(
foreach my $package ( @{ $dh{DOPACKAGES} } ) {
my $tmp = tmpdir($package);
- print "\$tmp = $tmp\n";
+ # Copy manifests and methods into package directory
my $smf = pkgdir( $package, 'smf' );
- print "\$smf = $smf\n";
if ( $smf ne '' && !$dh{'ONLYSCRIPTS'} ) {
my $svcdir = "$tmp/lib/svc";
if ( !-d "$svcdir" ) {
@@ -148,6 +148,28 @@ foreach my $package ( @{ $dh{DOPACKAGES} } ) {
}
complex_doit("cp -a -v -f $smf/* $svcdir/");
}
+
+ # Get a list of all manifests in package
+ my @manifests = ();
+ find(
+ {
+ wanted => sub {
+ -f $_ && /^.*\.xml\z/s && push @manifests, $File::Find::name;
+ },
+ no_chdir => 1,
+ },
+ "$tmp/lib/svc/manifest"
+ );
+
+ # TODO: validate XML?
+
+ # Read all services from all manifests:
+ foreach my $manifest (@manifests) {
+ my $xml = XMLin( $manifest,
+ ForceArray =>
+ [qw/instance dependency exec_method propval property_group/] );
+ }
+
}
=head1 SEE ALSO