[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

World Domination 102: Bi-di text support in d-i



Hello world!

Although the progress we made on this task during DebConf4 itself was in
some ways a bit disappointing, I'm happy to report that we now have
preliminary packages of slang with support for bi-directional text
(Hebrew & Arabic) and font shaping (Arabic).  For some beautiful
screenshots, see
<http://people.debian.org/~vorlon/d-i/bidi/arabic-screenshot.png> (still
with a few bugs) and
<http://people.debian.org/~vorlon/d-i/bidi/arabic-screenshot2.png>.

This means it's time to start discussing how to integrate this work into
d-i.  The patches to slang are available at 
<http://people.debian.org/~vorlon/d-i/bidi/> as well, and have been
filed as a patch in bug #252956, but before a bidi-enabled package can
be uploaded to the archive, we need to be prepared to handle it in d-i.
The new slang package depends on libfribidi0.  On x86, this means an
additional 52k of space used for this added library, which must be part
of the initrd because it's used from the very beginning of the install.
Do we have this much space available on all of our initrd images?  (Can
someone tell me which images are tightest on space?)

If we don't have 52k to spare, there are two possibilities.  First, we
can try to do library reduction on libfribidi0.  This can potentially
get us down to 32k.  Second, since the interface is simple enough and
libslang already depends on libdl, we could have libslang dlopen()
libfribidi, so that its presence in the initrd is optional.  In the
second case, we wouldn't get the space savings of library reduction on
those images that do include bidi support, but it would mean it could be
omitted from any images that are tight on space.

If library reduction is the best option, I'll work on preparing a patch
to the fribidi package to implement the needed -pic package.  (We'll
also need libfribidi.so.0 to move from /usr/lib to /lib eventually, so
that /lib is self-contained, so I'll plan to address both of these at
the same time.)  If not, I'll update the slang patches to use dlopen()
instead.

Once the above decisions are sorted out, we need to arrange for the d-i
daily builds to remain buildable while the necessary udebs are updated
on all architectures.  Currently, it seems that to build d-i with bidi
support both slang1a-utf8-udeb and libfribidi0-udeb need to be added to
the packages list (pkg-lists/base).  I believe this is because the
slang1a udeb doesn't match the system slang library, so without
unpacking these in the build tree, mklibs isn't able to find all the
library dependencies it needs ("No library provides non-weak
fribidi_log2vis").  So this change must take place before any
bidi-enabled slang udebs are uploaded to the archive.

Even with these udebs pulled in, there still seems to be a lib reduction
problem with libfribidi (using a local test libfribidi-pic): the library
correctly reduces, and then the original full-sized lib is used.  I'd
appreciate it if someone who knows mklibs could help me figure this out.

Finally, once all of this is done, I've also gotten approval from the
debootstrap maintainer to NMU for bug #253229.  Adding libfribidi0 to
the package list for debootstrap now will make it possible to add bidi
support to the main libslang package after d-i rc2 releases, which means
we should be able to get full bidi support for debconf into sarge (even
if it just means sneaking it into a gap between rc2 and the final
release ;).

Comments are welcome, particularly if anyone sees something here that
I've overlooked.

Thanks,
-- 
Steve Langasek
postmodern programmer

Attachment: signature.asc
Description: Digital signature


Reply to: