Control: -1 severity important
Control: -1 retitle [fontconfig-config] Removed symlinks in
/etc/fonts/conf.d get recreated when the opposite link doesn't exist
either

Hi,

> This is what I do:
> # rm /etc/fonts/conf.d/70-no-bitmaps.conf

So, what is happening is that this is not a supported operation with
the current scripts.  Ths is where the data is read from the current
state:

==== debian/fontconfig-config.config ====
enable_bitmaps="dunno"

yes_bitmaps_2_3="30-debconf-yes-bitmaps.conf"
yes_bitmaps_2_4="70-yes-bitmaps.conf"
no_bitmaps_2_3="30-debconf-no-bitmaps.conf"
no_bitmaps_2_4="70-no-bitmaps.conf"

if [ -h $CONFDIR/$yes_bitmaps_2_4 -o -h $CONFDIR/$yes_bitmaps_2_3 ]; then
        enable_bitmaps="true"
fi

if [ -h $CONFDIR/$no_bitmaps_2_4 -o -h $CONFDIR/$no_bitmaps_2_3 ]; then
        enable_bitmaps="false"
fi

# Versions prior to 2.6.0-2 are broken and leave us with no symbolic
# link, so we have to re-ask the user his choice :(
if [ "$enable_bitmaps" = "dunno" ]; then
    db_fset fontconfig/enable_bitmaps seen false
    enable_bitmaps="false"
fi
db_set fontconfig/enable_bitmaps "$enable_bitmaps"
==== end snippet ====

And this is where it's applied:

==== debian/fontconfig-config.postinst ====
db_get fontconfig/enable_bitmaps
enable_bitmaps="$RET"

yes_bitmaps="70-yes-bitmaps.conf"
no_bitmaps="70-no-bitmaps.conf"

if [ -h $CONFDIR/$yes_bitmaps ]; then
    rm $CONFDIR/$yes_bitmaps
fi

if [ -h $CONFDIR/$no_bitmaps ]; then
    rm $CONFDIR/$no_bitmaps
fi

case "$enable_bitmaps" in
"true")
    ln -s $CONFAVAIL/$yes_bitmaps $CONFDIR/$yes_bitmaps
    ;;
*)
    ln -s $CONFAVAIL/$no_bitmaps $CONFDIR/$no_bitmaps
    ;;
esac
==== end snippet ====

So, as you can see, it either creates the yes symlink or the no
symlink.  When you remove the no symlink without creating the yes
symlink, you end up in an inconsistent state.

This is the same situation for the other two debconf questions, if you
remove the symlinks instead of creating the opposite one, you end up
in an inconsistent state.

This means a very bad user experience, but I'm not convinced that this
is a grave bug, it's actually doing the "right" thing in reading the
links that exist and not using debconf as a registry.  It's just that
you need to create the "yes" symlink instead of just removing the "no"
symlink.

Imagine that instead of symlinks this would be a conf file with a
field in it, say "enable_bitmaps", and you can either set it to true
or false, but you go and set it to an empty string. This would be an
inconsistent state and it would be acceptable for the field to be
re-filled to turn into a consistent state again.

The solution to your problem is to either run dpkg-reconfigure
fontconfig-config and answer the bitmap question with yes, or manually
create the yes file.  The solution to this bug is much more complex,
as it would require somehow signalling from the .config to the
.postinst script that the user is in an inconsistent state and that
state shouldn't be corrected.

-- 
Regards,
Marga


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to