On Thu, Jul 26, 2012 at 2:48 PM, Ben Pfaff <b...@nicira.com> wrote: > Debian bug #681880. > CC: 681...@bugs.debian.org > Reported-by: Bastian Blank <wa...@debian.org> > Signed-off-by: Ben Pfaff <b...@nicira.com> > --- > REPORTING-BUGS | 2 +- > debian/automake.mk | 1 + > debian/openvswitch-switch.dirs | 1 + > debian/openvswitch-switch.postinst | 15 +++++++++++ > debian/openvswitch-switch.postrm | 4 +- > debian/openvswitch-switch.prerm | 50 > ++++++++++++++++++++++++++++++++++++ > 6 files changed, 70 insertions(+), 3 deletions(-) > create mode 100755 debian/openvswitch-switch.prerm > > diff --git a/REPORTING-BUGS b/REPORTING-BUGS > index 86510d2..af0096b 100644 > --- a/REPORTING-BUGS > +++ b/REPORTING-BUGS > @@ -32,7 +32,7 @@ The following are also handy sometimes: > your OS (e.g. "Centos 5.0"). > > * The contents of the vswitchd configuration database (usually > - /etc/openvswitch/conf.db). > + /etc/openvswitch/conf.db or /var/lib/openvswitch/conf.db). > > * The output of "ovs-dpctl show". > > diff --git a/debian/automake.mk b/debian/automake.mk > index b6cb12e..b025cdd 100644 > --- a/debian/automake.mk > +++ b/debian/automake.mk > @@ -44,6 +44,7 @@ EXTRA_DIST += \ > debian/openvswitch-switch.manpages \ > debian/openvswitch-switch.postinst \ > debian/openvswitch-switch.postrm \ > + debian/openvswitch-switch.prerm \ > debian/openvswitch-switch.template \ > debian/openvswitch-switch.links \ > debian/openvswitch-test.dirs \ > diff --git a/debian/openvswitch-switch.dirs > b/debian/openvswitch-switch.dirs > index 0b1f281..ccbbbf7 100644 > --- a/debian/openvswitch-switch.dirs > +++ b/debian/openvswitch-switch.dirs > @@ -1,2 +1,3 @@ > /etc/openvswitch > +/var/lib/openvswitch > A nitpick - maybe keep alphabetic sequence?
> /usr/share/openvswitch/switch > diff --git a/debian/openvswitch-switch.postinst > b/debian/openvswitch-switch.postinst > index 7b9d7bc..38e1eee 100755 > --- a/debian/openvswitch-switch.postinst > +++ b/debian/openvswitch-switch.postinst > @@ -33,6 +33,21 @@ case "$1" in > fi > done > fi > + > + # Ensure that /etc/openvswitch/conf.db links to > /var/lib/openvswitch, > + # moving an existing file if there is one. > + # > + # Ditto for .conf.db.~lock~. > + for base in conf.db .conf.db.~lock~; do > + new=/var/lib/openvswitch/$base > + old=/etc/openvswitch/$base > + if test -f $old && test ! -e $new; then > + mv $old $new > + fi > + if test ! -e $old && test ! -h $old; then > + ln -s $new $old > + fi > + done > The code above will break fresh install, because here we would create a dangling symlink /etc/openvswitch/conf.db -> /var/lib/openvswitch/conf.db. But later, when we call upgrade_db() from ovs-ctl, then the ovsdb-tool would try to create the database in /etc/openvswitch/conf.db, not in /var/lib/openvswitch/conf.db. And that will fail. > ;; > > abort-upgrade|abort-remove|abort-deconfigure) > diff --git a/debian/openvswitch-switch.postrm > b/debian/openvswitch-switch.postrm > index 88bf9fc..ff4ae4a 100755 > --- a/debian/openvswitch-switch.postrm > +++ b/debian/openvswitch-switch.postrm > @@ -21,8 +21,8 @@ set -e > > case "$1" in > purge) > - rm -f /etc/openvswitch/conf.db > - rm -f /etc/openvswitch/.conf.db.~lock~ > + rm -f /etc/openvswitch/conf.db /etc/openvswitch/.conf.db.~lock~ > + rm -f /var/lib/openvswitch/conf.db > /var/lib/openvswitch/.conf.db.~lock~ > rm -f /etc/default/openvswitch-switch > rm -f /var/log/openvswitch/ovs-vswitchd.log* || true > rm -f /var/log/openvswitch/ovsdb-server.log* || true > diff --git a/debian/openvswitch-switch.prerm > b/debian/openvswitch-switch.prerm > new file mode 100755 > index 0000000..9221ef1 > --- /dev/null > +++ b/debian/openvswitch-switch.prerm > @@ -0,0 +1,50 @@ > +#!/bin/sh > +# prerm script for openvswitch-switch > +# > +# see: dh_installdeb(1) > + > +set -e > + > +# summary of how this script can be called: > +# * <prerm> `remove' > +# * <old-prerm> `upgrade' <new-version> > +# * <new-prerm> `failed-upgrade' <old-version> > +# * <conflictor's-prerm> `remove' `in-favour' <package> > <new-version> > +# * <deconfigured's-prerm> `deconfigure' `in-favour' > +# <package-being-installed> <version> `removing' > +# <conflicting-package> <version> > +# for details, see http://www.debian.org/doc/debian-policy/ or > +# the debian-policy package > + > + > +case "$1" in > + upgrade) > + # Ensure that conf.db and its lockfile in /etc/openvswitch are not > + # dangling symlinks, because this caused ovsdb-server to hang at > + # startup in versions of OVS older than 1.4.2+git20120612-7. > + for base in conf.db .conf.db.~lock~; do > + fn=/etc/openvswitch/$base > + if test -h $fn && test ! -e $fn; then > + rm -f $fn > + fi > + done > + ;; > + > + remove|deconfigure) > + ;; > + > + failed-upgrade) > + ;; > + > + *) > + echo "prerm called with unknown argument \`$1'" >&2 > + exit 1 > + ;; > +esac > + > +# dh_installdeb will replace this with shell code automatically > +# generated by other debhelper scripts. > + > +#DEBHELPER# > + > +exit 0 > -- > 1.7.2.5 > _______________________________________________ > dev mailing list > d...@openvswitch.org > http://openvswitch.org/mailman/listinfo/dev > Thanks, Ansis