[Pkg-ocaml-maint-commits] [SCM] dose3 packaging branch, master, updated. debian/2.9.4-2-8-g8d93afe

Stefano Zacchiroli zack at upsilon.cc
Fri Jun 10 20:30:49 UTC 2011


The following commit has been merged in the master branch:
commit 8d93afe960920015bbcd51349682cb508ea19fc5
Author: Stefano Zacchiroli <zack at upsilon.cc>
Date:   Fri Jun 10 22:30:24 2011 +0200

    new binary package: apt-cudf
    
    - provide glue among CUDF solvers and EDSP (i.e. APT's native)
      external solvers
    - new helper update-cudf-solvers, to be invoked at each new
      installation of CUDF solvers, to bind them to APT

diff --git a/debian/apt-cudf.install b/debian/apt-cudf.install
index 0d62735..5e81ca4 100644
--- a/debian/apt-cudf.install
+++ b/debian/apt-cudf.install
@@ -1 +1,2 @@
 usr/bin/apt-cudf
+debian/update-cudf-solvers	usr/sbin
diff --git a/debian/changelog b/debian/changelog
index 7025957..a654c7e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -4,6 +4,11 @@ dose3 (2.9.4+r2696-1) UNRELEASED; urgency=low
   * Imported Upstream version 2.9.4+r2696
     - upstream SVN snapshot, release 2696
     - contains apt-cudf
+  * new binary package: apt-cudf
+    - provides glue among CUDF solvers and EDSP (i.e. APT's native)
+      external solvers
+    - new helper update-cudf-solvers, to be invoked at each new
+      installation of CUDF solvers, to bind them to APT
 
  -- Stefano Zacchiroli <zack at debian.org>  Fri, 10 Jun 2011 15:45:43 +0200
 
diff --git a/debian/update-cudf-solvers b/debian/update-cudf-solvers
new file mode 100755
index 0000000..4f88067
--- /dev/null
+++ b/debian/update-cudf-solvers
@@ -0,0 +1,62 @@
+#!/usr/bin/perl -w
+#
+# update-cudf-solvers: register available CUDF solvers and bind them to APT
+#
+# Copyright (C) Stefano Zacchiroli 2011 <zack at debian.org>
+# License: GNU Lesser General Public License, version 3 or above
+
+use strict;
+use File::Basename;
+
+my $cudf_dir = "/usr/share/cudf/solvers";
+my $edsp_dir = "/usr/lib/apt/solvers";
+my $apt_cudf = "/usr/bin/apt-cudf";
+
+my $debug = 0;
+
+sub shallow_find($$) {
+    my ($dir, $pred) = @_;
+    my @found = ();
+    foreach my $f (`find $dir -maxdepth 1 $pred`) {
+	chomp $f;
+	push @found, basename $f;
+    }
+    return @found;
+}
+
+sub warning($) { my ($msg) = @_; print STDERR "update-cudf-solvers: W: $msg\n"; }
+sub debug($) { my ($msg) = @_; print STDERR "update-cudf-solvers: I: $msg\n" if $debug; }
+
+my @cudf_solvers = shallow_find($cudf_dir, "-type f");	# current CUDF solvers
+my @edsp_solvers = shallow_find($edsp_dir, "-type l");	# current EDSP solvers
+
+foreach my $s (@cudf_solvers) { debug "found cudf solver: $s"; }
+foreach my $s (@edsp_solvers) { debug "found edsp solver: $s"; }
+
+# install: act on new CUDF solvers; make them available as EDSP solvers
+foreach my $cudf_name (@cudf_solvers) {
+    my $edsp_solver = "$edsp_dir/$cudf_name";
+    unless (-l $edsp_solver && readlink($edsp_solver) eq $apt_cudf) {
+	if (-e $edsp_solver || -l $edsp_solver) {
+	    # either existing non CUDF solver or dangling symlink
+	    warning "refuse to overwrite $edsp_solver with a symlink to $apt_cudf, skipping";
+	} else {	# file exists, but doesn't point to apt-cudf
+	    debug "symlink $edsp_solver to $apt_cudf";
+	    symlink $apt_cudf, $edsp_solver
+		or warning "cannot symlink $edsp_solver to $apt_cudf, skipping";
+	}
+    }
+}
+
+# garbage collection: act on old EDSP solvers; get rid of them
+foreach my $edsp_name (@edsp_solvers) {
+    my $edsp_solver = "$edsp_dir/$edsp_name";
+    if (-l $edsp_solver && readlink($edsp_solver) eq $apt_cudf) {
+	if (! grep {"$_" eq "$edsp_name"} @cudf_solvers) {	
+	    # EDSP && CUDF solver, no longer existing
+	    debug "unlink (gone) $edsp_solver";
+	    unlink $edsp_solver
+		or warning "cannot unlink $edsp_solver, skipping";
+	}
+    }
+}

-- 
dose3 packaging



More information about the Pkg-ocaml-maint-commits mailing list