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