------------------------------------------------------------------------------ Index Preparing an area to build the Mozilla Get the mozilla source Unpack Building Configure Explanation for the IndiX .mozconfig options Actual Building Testing the IndiX build of mozilla Prepare a tarball/zip of IndiX build Installing from the tarball/zip of IndiX build Plugins IndiX TODO and attempts ZWJ and ZWNJ problem and attempts Improper layout for print output Author ------------------------------------------------------------------------------ Preparing an area to build the Mozilla Create a directory outside the remaster area. Suppose our remaster area is under /mnt/hda5/remaster. We create a moz178 directory at /mnt/hda12/indix2/mozilla/moz178 It should have free space of about 1 to 2 GB. Example: knoppix@Knoppix[moz178]$ df . Filesystem 1K-blocks Used Available Use% Mounted on /dev/hda12 12602596 6730532 5231876 57% /mnt/hda12 Get the mozilla source cd /mnt/hda12/indix2/mozilla/moz178 ls -l *.bz2 knoppix knoppix 30449749 Jun 5 2005 mozilla-1.7.8-source.tar.bz2 ; obtained from mozilla.org Unpack tar -vjf mozilla-1.7.8-source.tar.bz2 ; unpacks the source into /mnt/hda12/indix2/mozilla/moz178/mozilla knoppix@Knoppix[moz178]$ df . Filesystem 1K-blocks Used Available Use% Mounted on /dev/hda12 12602596 7037668 4924740 59% /mnt/hda12 About 300 MB has been consumed by the Mozilla source distribution. Building The build should be done under the remaster environment. Alternatley you can boot from the Knoppix cdrom and adduser yourself as the user owning the /mnt/hda12/indix2/mozilla/moz178/mozilla. Better to build with the user previlege rather than under root. Only install should be under root. After unpacking, enter the mozilla directory cd /mnt/hda12/indix2/mozilla/moz178/mozilla First a .mozconfig file will be created in the moz178/mozilla directory and then the build will begin. Configure ;cd /mnt/hda12/indix2/mozilla/moz178/mozilla Create a .mozconfig file --------IndiX .mozconfig ---------------------------------- mk_add_options MOZ_CO_PROJECT=suite ac_add_options --enable-application=suite ac_add_options --enable-svg ac_add_options --enable-svg-renderer-libart ac_add_options --enable-default-toolkit=gtk ac_add_options --enable-freetype2 ac_add_options --enable-crypto ac_add_options --disable-tests ac_add_options --disable-debug mk_add_options MOZ_INTERNAL_LIBART_LGPL=1 mk_add_options MOZ_CALENDAR=1 mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/moz178bin MOZ_INTERNAL_LIBART_LGPL=1 MOZ_CALENDAR=1 --------end IndiX .mozconfig ---------------------------------- Explanation for the IndiX .mozconfig options While building, it is recommended to place the object files in a separate directory. IndiX build is in moz178bin by: mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/moz178bin IndiX additions are for enable gtk, freetype2, crypto and disable tests debug crypto enables access to https sites. Otherwise it asks you to install Personal Security Manager (PSM) when you try to access shttps sites. We have seen that the mozilla that comes with the original Knoppix 3.6 distribution does not present the Indic text to the IndiX XServer and so does not shape it properly. Suspect that at the client, it uses some Complex Text processing, maybe using XFt2, Qt, Pango, CTL. The use of old gtk allows the mozilla to pass the logical sequence of Indic text characters to the X11 Server. There the IndiX shaping engine takes over and the text is displayed properly. At the moment, we feel that the enabling of gtk and freetype2 is what contributes to this happy situation. Maybe a mozilla guru can clarify! Actual Building ;cd /mnt/hda12/indix2/mozilla/moz178/mozilla ; Our Knoppix did not have a gmake command but the make was really the gmake ; so we made a link by ; ln -s make gmake gmake -f client.mk build >& build.log & ; the log of the build will be palced in the build.log ; you can watch the build process by tail -f build.log Our built ran for around 30 mins and the last few messages were ------ output of IndiX mozilla build ------------------------------------ gmake[4]: Leaving directory `/mnt/hda12/indix2/mozilla/moz178/mozilla/moz178bin/embedding/browser/gtk/tests' gmake[3]: Leaving directory `/mnt/hda12/indix2/mozilla/moz178/mozilla/moz178bin/embedding/browser/gtk' gmake[2]: Leaving directory `/mnt/hda12/indix2/mozilla/moz178/mozilla/moz178bin' make[1]: Leaving directory `/mnt/hda12/indix2/mozilla/moz178/mozilla/moz178bin ------ end of output of IndiX mozilla build ------------------------------------ The disk after the build was: knoppix@Knoppix[moz178]$ df . Filesystem 1K-blocks Used Available Use% Mounted on /dev/hda12 12602596 7352996 4609412 62% /mnt/hda12 So about 315 MB is needed for the build. Testing the IndiX build of mozilla Before installation in the system area, test out the newly born mozilla at its birthplace. cd moz178bin/dist/bin ./mozilla Test bbc.co.uk/hindi to verify that Indix text is shaped properly. Notably the IMatra should appear to the left of the consonant. If not, either you are not using an IndiX X11 server or the mozilla build has cooked the Indic text inthe X11 Client backyard, employing another cook. Test gmail.com to verify that https sites are accessible. Prepare a tarball/zip of IndiX build objdir=/mnt/hda12/indix2/mozilla/moz178/mozilla/moz178bin gmake -C $objdir/xpinstall/packager ; the gmake can be executed in anywhere if the absolute objdir is given. ; output of gmake ... cd ../../dist && \ tar -c --owner=0 --group=0 --numeric-owner --mode="go-w" \ -f - gecko-sdk | gzip -vf9 > gecko-sdk-i686-pc-linux-gnu.tar.gz gmake: Leaving directory \ `/mnt/hda12/indix2/mozilla/moz178/mozilla/moz178bin/xpinstall/packager` ; end of output of gmake ; the tar.gz are in ; /mnt/hda12/indix2/mozilla/moz178/mozilla/moz178bin/dist distdir=/mnt/hda12/indix2/mozilla/moz178/mozilla/moz178bin/dist cd $distdir ls -l *.gz knoppix knoppix 1996112 Dec 31 11:23 gecko-sdk-i686-pc-linux-gnu.tar.gz knoppix knoppix 14863190 Dec 31 11:23 mozilla-i686-pc-linux-gnu.tar.gz ; The mozilla-i686-pc-linux-gnu.tar.gz is for binary install. Installing from the tarball/zip of IndiX build indixmozilla=$distdir/mozilla-i686-pc-linux-gnu.tar.gz For installing say in /usr/local cd /usr/local ; save old mozilla mv mozilla mozilla.sandeep ; unpack the IndiX mozilla distribution tar -xvzf $indixmozilla Plugins Macromedia Flash and Shockwave Players 7 for Linux Version 7.0.61.0 is installed as plugin with license valid till Jan 5, 2007. From: Macromedia Free Licensing Program Mailed-By: macromedia.com To: rigvinod@gmail.com Date: Jan 5, 2006 1:46 PM Subject: Macromedia Flash and Shockwave Players Distribution License Thank you for your application. This email serves as confirmation of your license grant. We recommend keeping this email for future use. However, in the event that you misplace this email, you can have one re-sent to you. Just visit the Macromedia Licensing home page (http://www.macromedia.com/licensing/) and click on the link to have your confirmation email re-sent to the email account attached to your macromedia.com profile. ABOUT YOUR LICENSE Your Macromedia Flash and Shockwave Players Distribution license is valid for one (1) year from the date you completed the agreement. At that time you will need to apply for a new license to continue using the product. ... Java Plugin that came with the Knoppix 3.6 is installed from /usr/lib/j2se/1.4/jre/plugin/i386/mozilla cd /usr/local/mozilla/plugins ln -s /usr/lib/j2se/1.4/jre/plugin/i386/mozilla/javaplugin_oji.so IndiX TODO and attempts ZWJ and ZWNJ problem and attempts (unsuccessful upto 25 Jan 2006) The Mozilla composer is a versatile one that ran without recompilation on the IndiX enabled XServer. But Indic text needs ZWJ and ZWNJ as part of the text stream to modify the rendered form as per Unicode. However Mozilla composer was not passing these characters to the X11 server and so the effects of ZWJ and ZWNJ are not visible. Mozilla was found to look at and process differently ZWJ/ZWNJ at three places. 1) ZWJ and ZWNJ are listed as ignorable characters in mozilla/intl/unicharutil/src/ignorables_abjadpoints.x-ccmap ... 0X00200B : ZERO WIDTH SPACE 0X00200C : ZERO WIDTH NON-JOINER 0X00200D : ZERO WIDTH JOINER 0X00200E : LEFT-TO-RIGHT MARK ... The ignorables_abjadpoints.x-ccmap tells how to add to the CCMAP. An input_file has to be created and then a perl script ccmapbin.pl has to be run. The output ccmap contains the input_file within comments. So we created a 'ignoreTheseChars' file by extracting it from the existing ignorables_abjadpoints.x-ccmap file. A copy of ignorables_abjadpoints.x-ccmap was made as orig.ignorables_abjadpoints.x-ccmap Then we ran perl ../tools/ccmapbin.pl ignoreTheseChars It created a new ignorables_abjadpoints.x-ccmap exactly similar to orig.ignorables_abjadpoints.x-ccmap. Now that we know how to create the ccmap file, we can work on the 'ignoreTheseChars' further. You can add the required chars to 'ignoreTheseChars' or delete from it. Then you just run perl ../tools/ccmapbin.pl ignoreTheseChars So created mozilla/intl/unicharutil/src/ignoreTheseChars and modified mozilla/intl/unicharutil/tools/ccmapbin.pl to add a line in the preamble. The logic in ccmapbin.pl is not touched. This ignore is for transliteration. Still we make this modification. 2) Similarly in mozilla/gfx/src/windows/ created blankGlyphForTheseChars for easy update of blank_glyph.ccmap. Here the blank glyph is chosen for these characters including ZWJ and ZWNJ. This may be the correct point. The new ccmap is blank_glyph.ccmap created by perl ../../../intl/unicharutil/tools/ccmapbin.pl blankGlyphForTheseChars But this did not work either. But let the modification stay. 3) In mozilla/layout/base/src/nsBidi.cpp, PRBool nsBidi::IsBidiControl was returning True for ZWJ, ZWNJ. Try returning False. The two mozillas behave the same with respect to ZW[N]J. So waiting for a breakthrough or help from a Mozilla guru. Improper layout for print output Mozilla lays out Indic text properly on the display.But when it prints, it does some simple calculation for layout just counting the characters or so. For Indic text in utf-8 for example, the width calculated by Mozilla print exceeds the actual width. So Mozilla puts out PostScript showtext lines with fewer characters. The IndiX netprint just transforms the showtext to glyphshow after passing the Indix text through the shaping pipeline and obtaining the glyphs. It cannot alter the layout decided by Mozilla print. We have not been able to solve this problem. The layout for print should be the same as for the display. Again a call to a Mozilla Guru. Author Vinod Kumar Project IndiX 31 Dec 2005 vinod@cdacmumbai.in ------------------------------------------------------------------------------ Last modified: 25 Jan 2006