Hi Helmut,
On Mi, 20 Jun 2012, Helmut Grohne wrote:
> It serves a purpose. The intended purpose is that users can add their
> own .cat files and have them included via update-catalog --update-super,
So I thought, but in one way or the other one has to check for validity.
> > * the dh_installcatalogs generated code is not policy conform, well not
> > even anything debian related. The configure (postinst) part simply
> > does
> > rm -f /etc/sgml/openjade.cat
> > without any action in preinst or so.
> > If you do this, it means that changes to config files under /etc/sgml/
> > are *not* preserved
>
> As is explained in precisely that preinst, this only happens if we are
> upgrading from a version where the package catalog was not a conffile.
Ahh, that was in stable where I checked, there these files are not conffiles
but just hanging around. I see that now they are all proper conffiles,
sorry for the noise.
> I have no clue how ucf works. This is reason enough for me to try hard
Not needed as they are now proper conffiles. ucf in principle
can register a file as conffile even if not shipped as is in the
deb. That is, if a file under /etc is created by the postinst, it can
be made into a conffile.
But no need here, all are already proper conffiles.
> Both approaches remove the ability to add further catalogs. This is a
> regression I do not want to introduce.
Agreed.
> > - ship for each of the affected *old* packages the md5sum of the resepctive
> > config file
>
> I do not have the computational resources to do this. Technically I
> would need all {pre,post}{inst,rm} that contains "sgml" or
> "update-catalog" of every package ever created.
Indeed, because they were not shipped as conffiles, buaahhhhhhahaha.
One would need to install a stable system in a chroot, install all
sgml related packages (how many there are? well all depending on sgml-base?)
and see what files finally turn up in /etc/sgml.
I see, loads of paiin, probably not worth it.
> Let me explain another approach suggested by Joachim Breitner:
>
> Basically having any reference to a non-existent catalog breaks the sgml
> related tools. However this situation may be caused, it causes further
> breakage. So maybe we can check the package (or user) catalogs in
> /etc/sgml at trigger time. If a catalog references a file that does not
> exist, a warning can be printed and the catalog be skipped.
>
> This approach might need an explicit trigger activation in postrm
> remove, because at this point the conffile is not removed. This needs to
> be evaluated. (Thanks to Joachim Breitner for his attention to detail.)
>
> This solution has a number of advantages:
> 1) Changes required only apply to sgml-base (and no other packages).
> 2) Works with both packages built with old and new debhelper.
> 3) If a user adds a broken catalog file, and issues update-catalog
> --update-super, she will see a message and can correct her changes.
Good solution, agreed, and easy to implement.
> The obvious disadvantage is that I have to write a partial parser (at
#
# parses one .cat file and returns a list of CATALOG files
sub parse_one_file {
my $fn = shift;
open(IN, "<$fn") || die "Cannot open $fn: $!";
my @l = <IN>;
close(IN) || warn "Cannot close $fn: $!";
my @ret;
for (@l) {
if (m/^CATALOG\s+([^\s]*)\s*$/) {
if (-r $1) {
push @ret, $1;
} else {
printf STDERR "Catalogue file $1 referenced in $fn does not exist,
skipping it!\n";
}
}
}
return @ret;
}
I tested it with this perl code:
foreach my $f (@ARGV) {
print "Catalogues in $f:\n";
my @cs = parse_one_file($f);
for my $c (@cs) {
print "==>$c...\n";
}
}
and run perl foo.pl /etc/sgml/*.cat, and it told me the right files.
You might have to fix add more cases to the parser, I don't know
what else is allowed in these files.
Best wishes
Norbert
------------------------------------------------------------------------
Norbert Preining preining@{jaist.ac.jp, logic.at, debian.org}
JAIST, Japan TeX Live & Debian Developer
DSA: 0x09C5B094 fp: 14DF 2E6C 0307 BE6D AD76 A9C0 D2BF 4AA3 09C5 B094
------------------------------------------------------------------------
Arthur hoped and prayed that there wasn't an afterlife.
Then he realised there was a contradiction there and merely
hoped that there wasn't an afterlife.
--- Arthur realising that he's in a certain death situation
--- with a supernova bomb that is shaped like a cricket ball.
--- Douglas Adams, The Hitchhikers Guide to the Galaxy
--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]