From owner-freebsd-ports@FreeBSD.ORG Mon Jan 14 17:04:30 2008 Return-Path: Delivered-To: FreeBSD-ports@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9778216A421; Mon, 14 Jan 2008 17:04:30 +0000 (UTC) (envelope-from nikola.lecic@anthesphoria.net) Received: from anthesphoria.net (anthesphoria.net [200.46.204.219]) by mx1.freebsd.org (Postfix) with ESMTP id CB5A013C4F6; Mon, 14 Jan 2008 17:04:29 +0000 (UTC) (envelope-from nikola.lecic@anthesphoria.net) X-Bogosity: No, tests=bogofilter X-DKIM: Sendmail DKIM Filter v2.4.1 anthesphoria.net m0EH4Lrj043956 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=anthesphoria.net; s=phero; t=1200330268; bh=BGfCn4XK0cMkgeTxqmc3I3cnFf0m30ag8UnFNpN+b kI=; l=11550; h=X-Bogosity:Date:From:To:Cc:Subject:Message-ID: In-Reply-To:References:X-Mailer:X-Face:X-Operating-System: Mime-Version:Content-Type:Content-Transfer-Encoding; b=wagiJFDG0fC fgsJqzpA36RetWGyXhL9zWpJgAmNvLSrhXGynT55cSHxJNYpamYRsGuyelGnXctnCC+ eZLXTgXEt27D/RbmqleDgbEAQN3sjBGO8fJgrqZI690w93SfaTbzKo6mWMftfQIjC8A QJZNkl4YD96zXzMvb38J2YCUw8= Received: from anthesphoria.net (adsl-198-212.eunet.yu [213.198.198.212]) (authenticated bits=0) by anthesphoria.net (8.14.2/8.14.2) with ESMTP id m0EH4Lrj043956 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 14 Jan 2008 18:04:24 +0100 (CET) (envelope-from nikola.lecic@anthesphoria.net) Date: Mon, 14 Jan 2008 18:04:14 +0100 From: Nikola =?UTF-8?B?TGXEjWnEhw==?= To: Hiroki Sato Message-ID: <20080114180414.28009108@anthesphoria.net> In-Reply-To: <20080114.023713.237718911.hrs@allbsd.org> References: <20080108.114947.266356108.hrs@allbsd.org> <20080108.132806.27123224.hrs@allbsd.org> <20080108095126.2efc4557@anthesphoria.net> <20080114.023713.237718911.hrs@allbsd.org> X-Mailer: Claws Mail 3.1.0 (GTK+ 2.12.4; i386-portbld-freebsd6.2) X-Face: pbl6-.[$G'Fi(Ogs2xlXP-V6{3||$Y[LOYs&~GJoikj'cVjcFC[V7du;;0~6nO= [Vi2?uU1Pq~,=Adj@,T:|"`$AF~il]J.Nz#2pU',Y7.{B;m/?{#sO^Dvo$rnmY6] X-Operating-System: FreeBSD 6.2-RELEASE-p8 Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: FreeBSD-ports@FreeBSD.org Subject: Re: CFT: Adobe Reader 8 + SCIM/UIM X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jan 2008 17:04:30 -0000 I tried to follow all your tests and to check what binary is loaded in what case. Below are my observations. Then I tested your diff, comments included. Finally, please find the modified ADOBE_VER-dependent version of that patch that served me perfectly. Note: Sometimes I wasn't sure if the analyses in your post assumed that there was no linux im-scim.so present in the system. Without linux im-scim.so, there is no way for me to get acroread8+SCIM to work for me. Therefore, I did all tests both with and without linux im-scim.so and included separate comments. BTW, I think that in the diff you obviously meant - case GTK_IM_MODULE in + case ${GTK_IM_MODULE} in On Mon, 14 Jan 2008 02:37:13 +0900 (JST) Hiroki Sato wrote: > Nikola Lečić wrote > in <20080108095126.2efc4557@anthesphoria.net>: > > ni> 3. Now acroread7 doesn't work (for me at least), with all > ni> SCIM-related environment variables schemes. It just returns me > ni> back to the shell prompt without any error message; > ni> > ni> 4. However, if I use the environment scheme I suggested in my > ni> previous mail and change GTK_IM_MODULE/XMODIFIERS in acroread7 > ni> startup script as proposed, all applications work, and SCIM in > ni> them. > > From further investigation, the cause of this problem turns out to be > as follows: > > a) When GTK_IM_MODULE=xim and one runs a Linux binary that uses > linux-gtk2 library, the binary uses im-xim.so in linux-gtk2 and it > works. The same here, if XMODIFIERS=@im=SCIM (if one actually wants SCIM, of course). > b) When GTK_IM_MODULE=scim (or other than xim) and one runs a Linux > binary that uses linux-gtk2 library, the binary tries to load the > corresponding immodule file. If the corresponding file is found > in /usr/compat/linux/usr/lib/gtk-2.0 (i.e. Linux binary), it is > loaded and should work fine. If the corresponding file is found > in /usr/local/lib/gtk-2.0 (i.e. FreeBSD native binary), it is > loaded but does not work. In the latter case, if the loading > fails gracefully, it falls back into loading im-xim.so. I can confirm this, in both cases. (However, as you confirmed, the presence of linux im-scim.so will crash acroread7.) > c) acroread7 works only with im-xim.so and loading FreeBSD binary > fails gracefully. This means setting GTK_IM_MODULE=scim falls > back into GTK_IM_MODULE=xim automatically. (probably this is the > reason why GTK_IM_MODULE=scim + QT_IM_MODULE=scim + > XMODIFIERS=@im=SCIM works.) With GTK_IM_MODULE=scim acroread7 will (according to b)) try to load im-scim.so from /usr/compat/linux/usr/lib/gtk-2.0, which will cause a crash. However, yes, if acroread7 loads linux im-xim.so, SCIM will work. > d) acroread8 works with both im-xim.so and im-scim.so as far as I can > check, and loading FreeBSD binary makes the process get hosed. Not exactly so for me (if SCIM is the goal). * With (_and only with_) linux im-scim.so _and_ GTK_IM_MODULE=scim, acroread8+SCIM works. * Without linux im-scim.so no GTK_IM_MODULE settings helps. > So, the individual cases can be classified as follows: > > - acroread7 + GTK_IM_MODULE=xim + XMODIFIERS=@im=SCIM > > -> should work. @im=foo other than SCIM also works. The same here: acroread7 loads linux im-xim.so. In this case, with XMODIFIERS=@im=SCIM, acroread7+SCIM works. (BTW, SCIM won't work with GTK_IM_MODULE=xim + XMODIFIERS=@im=XIM anywhere (but such values imply that one doesn't want SCIM, I think.) > - acroread7 + GTK_IM_MODULE=scim > > -> should work. Even if FreeBSD native im-scim.so exists it is > always ignored and XIM is used. Note that if Linux im-scim.so > exists it prevents the acroread7 from working, but there is no > port of im-scim.so in the Ports Collection now. * With linux im-scim.so: yes, it crashes acroread7 (as reported). * Without linux im-scim.so: the same here, it works. > - acroread8 + GTK_IM_MODULE=xim + XMODIFIERS=@im=SCIM > > -> should work. @im=foo other than SCIM also works. Not for me. Linux im-scim.so must be present, and GTK_IM_MODULE must be changed to scim. Otherwise, acroread8 will load linux im-xim.so and SCIM won't work. XMODIFIERS doesn't matter in this case. (Again, I think that xim/XIM isn't preferable combination for SCIM user, as stated above.) > - acroread8 + GTK_IM_MODULE=scim > > -> does not work unless Linux im-scim.so exists. If FreeBSD native > im-scim.so exists the acroread8 process gets hosed (no fall-back > happens). * With linux im-scim.so present, yes, it works. * Without linux im-scim.so, nothing bad happens. acroread8 just loads Linux im-xim.so and SCIM won't work. > So, the safest way to loading Linux version of im-xim.so is setting > GTK_IM_MODULE=xim forcibly. And if setting XMODIFIERS properly there > should be little difference in its behavior from the user's point of > view. Forced GTK_IM_MODULE=xim will always cause linux im-xim.so to be loaded, but this is why acroread8+SCIM never works for me with the diff included with your previous mail... > I pondered over adding ports of the Linux immodules in my previous > post or a hack for GTK_IM_MODULE variable into print/acroreadwrapper, > but I think changing acroreadwrapper is better. A patch for > acroreadwrapper that sets GTK_IM_MODULE=xim forcibly and sets > XMODIFIERS=@im=foo according to GTK_IM_MODULE, has been attached. ... and that's why this confuses me: do you mean that you get acroread8+SCIM working without linux im-scim.so? > However, in your post you said when GTK_IM_MODULE=xim + > XMODIFIERS=@im=SCIM, the behavior is bad. Could you elaborate it? I > could not reproduce it. That statement was a part of description of global effects that various SCIM-related variables have. GTK_IM_MODULE=xim + XMODIFIERS=@im=SCIM is explained in SCIM documentation: http://www.scim-im.org/wiki/documentation/installation_and_configuration/all/system_configuration as the "the least optimal approach". For me, it has one bad and one good side: * switching among various SCIM keyboard layouts works normally only if "Share the same input method among all applications" is set in SCIM-setup, and even then not always perfectly. Otherwise, keyboard icon will usually be out of synchronisation with actually active keyboard layout in a given window, when the focus change; * good side is that it's currently the only way known to me to get the most complex keystroke rules of scim-kmfl-imengine working in OpenOffice, but this is another thing. (I'm investigating this and I'm sure there's a better solution.) Therefore I try to avoid xim/SCIM scheme. Now, to sum up what works for me. This list is the conditio sine qua non (after as much testing as I could do): 1. The only way to get SCIM working in acroread8 is to load linux im-scim.so. 2. GTK_IM_MODULE=scim + the presence of linux im-scim.so will crash acroread7. 3. However, this can be easily avoided by setting GTK_IM_MODULE=xim if ADOBE_VER=7. 4. acroread8 always loads linux version of GTK_IM_MODULE if it exists. XMODIFIERS are not important in such cases. Therefore the proposed diff is not functional for me. IMHO 1-4 means that hack of GTK_IM_MODULE must be ADOBE_VER-dependent. I included the modified version of your patch, which is the optimal solution for me. (I repeat, always with linux im-scim.so, i.e. with textproc/lunux-scim-libs port.) With this patch, SCIM works in both acroread7 and acroread8 with any possible environmental settings. I'd say it doesn't break anything for XIM users. I didn't test UIM. --- acroreadwrapper.diff begins here --- Index: Makefile =================================================================== RCS file: /eris/cvsroot/ports/print/acroreadwrapper/Makefile,v retrieving revision 1.9 diff -u -r1.9 Makefile --- Makefile 4 Jan 2008 20:20:20 -0000 1.9 +++ Makefile 14 Jan 2008 15:05:56 -0000 @@ -6,7 +6,7 @@ # PORTNAME= acroreadwrapper -PORTVERSION= 0.0.20071020 +PORTVERSION= 0.0.20080110 CATEGORIES= print MASTER_SITES= # empty DISTFILES= # empty @@ -29,7 +29,7 @@ ADOBEBASE= Adobe ACROBASE7= ${ADOBEBASE}/Acrobat7.0 ACROBASE8= ${ADOBEBASE}/Reader8 -PLUGINDIR= lib/browser_linux_plugins +PLUGINDIR= lib/npapi/linux-acroread do-fetch: @${DO_NADA} Index: files/acroread.in =================================================================== RCS file: /eris/cvsroot/ports/print/acroreadwrapper/files/acroread.in,v retrieving revision 1.5 diff -u -r1.5 acroread.in --- files/acroread.in 4 Jan 2008 20:20:20 -0000 1.5 +++ files/acroread.in 14 Jan 2008 16:15:21 -0000 @@ -1,4 +1,4 @@ -#!%%LINUXBASE%%/bin/sh +#!/bin/sh # $FreeBSD: ports/print/acroreadwrapper/files/acroread.in,v 1.4 2007/09/23 18:28:46 hrs Exp $ # environment variables: @@ -13,6 +13,14 @@ # When this script is invoked as "acroread7" and "acroread8", # ADOBE_VER is automatically set. # +# ADOBE_DISABLEIMMODULEHACK: +# This script sets GTK_IM_MODULE as "xim" by default because +# immodules other than xim require the corresponding module files +# in Linux binary, not FreeBSD native versions (if a FreeBSD +# native immodule library exists and the corresponding Linux +# library does not, Adobe Reader attempts to load the FreeBSD +# binary and it will fail). If $ADOBE_DISABLEIMMODULEHACK is +# defined as "YES", this behavior is disabled. ADOBE_LANG=`echo "${ADOBE_LANG}" | tr a-z A-Z` @@ -63,7 +71,6 @@ case ${ADOBE_LANG} in CHS) : ${GDK_USE_XFT:=0}; export GDK_USE_XFT ;; CHT) : ${GDK_USE_XFT:=0}; export GDK_USE_XFT ;; -JPN) : ${GTK_IM_MODULE:=xim}; export GTK_IM_MODULE ;; KOR) : ${GDK_USE_XFT:=0}; export GDK_USE_XFT ;; esac @@ -81,6 +88,32 @@ ;; esac +case ${ADOBE_DISABLEIMMODULEHACK} in +[Yy][Ee][Ss]) ;; # do nothing +*) + case ${ADOBE_VER} in + 7) + case ${GTK_IM_MODULE} in + ""|xim) ;; # do nothing + scim) + GTK_IM_MODULE=xim; export GTK_IM_MODULE + XMODIFIERS=@im=SCIM; export XMODIFIERS + ;; + esac + ;; + 8) + case ${XMODIFIERS} in + @im=SCIM) GTK_IM_MODULE=scim; export GTK_IM_MODULE ;; + *) ;; # do nothing + esac + ;; + esac + case ${GTK_IM_MODULE} in + ""|xim|scim) ;; # do nothing + *) XMODIFIERS="@im=${GTK_IM_MODULE}"; export XMODIFIERS ;; + esac +esac + case ${ADOBE_VER} in 7) ACROBASE=%%ACROBASE7%% @@ -98,15 +131,15 @@ --install-plugin) echo "installing PDF plugin..." echo "%%PREFIX%%/${ACROBASE}/${ADOBE_LANG}/Browser/intellinux/nppdf.so -> %%PREFIX%%/%%PLUGINDIR%%/nppdf.so" - mkdir -p /../%%PREFIX%%/%%PLUGINDIR%% + mkdir -p %%PREFIX%%/%%PLUGINDIR%% ln -s -f %%PREFIX%%/${ACROBASE}/${ADOBE_LANG}/Browser/intellinux/nppdf.so \ - /../%%PREFIX%%/%%PLUGINDIR%%/nppdf.so + %%PREFIX%%/%%PLUGINDIR%%/nppdf.so exit 0 ;; --deinstall-plugin) echo "deinstalling PDF plugin..." - rm -f /../%%PREFIX%%/%%PLUGINDIR%%/nppdf.so - rmdir /../%%PREFIX%%/%%PLUGINDIR%% 2> /dev/null || true + rm -f %%PREFIX%%/%%PLUGINDIR%%/nppdf.so + rmdir %%PREFIX%%/%%PLUGINDIR%% > /dev/null 2>&1 || true exit 0 ;; esac --- acroreadwrapper.diff ends here --- Best regards. -- Nikola Lečić :: Никола Лечић