[PATCH] spec: keep existing nwfilters uuid on update

Andrea Bolognani abologna at redhat.com
Thu Dec 3 17:31:42 UTC 2020


On Thu, 2020-12-03 at 17:39 +0100, Michal Privoznik wrote:
> On 10/26/20 10:21 AM, Nikolay Shirokovskiy wrote:
> > -cp %{_datadir}/libvirt/nwfilter/*.xml %{_sysconfdir}/libvirt/nwfilter/
> > +# keep existing filters uuid on update
> > +for dfile in %{_datadir}/libvirt/nwfilter/*.xml; do
> > +    sfile=%{_sysconfdir}/libvirt/nwfilter/`basename $dfile`
> > +    if [ -f "$sfile" ]; then
> > +      uuidstr=`sed -n '/<uuid>.*<\/uuid>/p' "$sfile"`
> > +      if [ ! -z "$uuidstr" ]; then
> > +        sed -e "s,<filter .*>,&\n$uuidstr," "$dfile" > "$sfile"
> > +        continue
> > +      fi
> > +    fi
> > +    cp "$dfile" "$sfile"
> > +done
> 
> I wonder if we should treat these .xml files as config files. I mean, 
> they can be changed by user and if they have been we should not touch 
> them at update no matter what. But if they haven't, then we should 
> replace them because they may contain new, better rules.
> 
> I've read spec file documentation here and it looks like 
> %config(noreplace) is doing just that:
> 
> https://rpm-packaging-guide.github.io/#more-on-macros
> 
> Would that solve the issue?

I think treating them as configuration files is exactly the opposite
of what we want to do, because they contain generated data (the
UUID) and so they will *always* be different from what was included
in the package.

I believe the only sane way to deal with them is mirror what we do
for the default network, and just leave the files in /etc alone if
they already exist: the user might miss out on improvements, but
that's still preferable to potentially wipe out local changes.

-- 
Andrea Bolognani / Red Hat / Virtualization




More information about the libvir-list mailing list