OpenBSDで日本語環境設定
■ このスレッドは過去ログ倉庫に格納されています
スマソ、i386以外のarchも対応したつもりだったのですが、PC/AT機しか 自由にできるマシンが身の回りに無いので、buildと動作確認はi386のみです。 # sparc64かぁ、ansi.h/int_types.hあたりでなんかやっちゃったかなぁ。。。 修正個所があれば、patchをここにはっつけてもらえれば更新しますんで、どうぞよろしうに。 どーしても動かんようであれば、kurati氏のとこのpatchも3.2用に更新されてるので、 そちらを試してみてください。 # ただしkurati氏のpatchはもう長いこと誰もメンテしてない # anoncvs@citrus.bsdclub.orgの方のソースコードがベースみたい。 # 漏れのはいちおー最新のNetBSD/Citrusベースです。動きゃどっちでも良いけど。 動作確認は、↓を参考に、xpg4dl/testモジュールを拾って http://mail-index.netbsd.org/tech-userlevel/2000/03/30/0001.html Makefileをごにょごにょして出力結果を 塩兄氏の日記でチェックしてみてください。 >>98 俺もあぬまり詳しくないけど。どういう目的かというと、ABI を保つためでしょう。例えば sys/times.h 中で、times(3) という関数は __BEGIN_DECLS #ifdef __LIBC12_SOURCE__ clock_t times __P((struct tms *)); #else clock_t times __P((struct tms *)) __RENAME(__times13); #endif __END_DECLS こういう風に宣言されています。ここで __LIBC12_SOURCE__ は旧版で、times(3) の ABI が変わった(?)ときに加わったのが __RENAME(__times13) の方。新しい環境で times(3) を使うと後者が適用されると思います。 で、__RENAME(__times13) とは、コンパイル時に、シンボル times を __times13 にすり替えるのだと思います。ここで、なんでかっていうのはうまく説明できませんけど、#define times __times13 じゃ整合がとれなくなったりするからでしょうか。__RENAME の振る舞いは printf '#include <sys/cdefs.h>\n__RENAME(foo)\n' | cc -E - | tail -1 printf '#undef __ELF__\n#include <sys/cdefs.h>\n__RENAME(foo)\n' | cc -E - | tail -1 printf '#include <sys/times.h>\ntimes(foo)\n' | cc -E - | grep times nm -g /usr/lib/libc.a | grep times とかやれば分かるんじゃないでしょうか。(というか、わたしもすぐ分からなくなるから↑こんな風にしています。) 神が降臨したようなので、おれも久々にOpenBSDを使ってみようかと思う今日このごろ >>100 さん、アドバイスどうも。 その後、patch を眺めたりイロイロいじってみたところ、 どうも cdefs.h の _RENAME マクロの #if 0 で決め打ってる 部分がよろしくないようです。 下の patch のようにしたところ、sparc64 では、うまく動いてる ように見えます。i386 は休みが明けたら make してみます(^^; gas のバージョンが違うせい? 193a194,199 > #ifdef __i386__ > #define _C_LABEL(x) __CONCAT(_,x) > #else > #define _C_LABEL(x) x > #endif > 195d200 < #if 0 197,199d201 < #else < #define ___RENAME(x) __asm__(___STRING(__CONCAT(_,x))) < #endif 201c203,204 < #define ___RENAME(x) ____RENAME(_/**/*) --- > #ifdef __i386__ > #define ___RENAME(x) ____RENAME(_/**/x) 202a206,208 > #else > #define ___RENAME(x) __asm__(___STRING(x)) > #endif >>103 げ、OpenBSD/sparc64ってELFだったのか。そりゃsymbolに"_"が余分に付く罠。 ですので>>103 のpatchは__i386__でなくて__ELF__っすね。 暇見て更新しておきます、ありがとうございました。 >>102 ちなみに私はちっとも神じゃないです。:-) 101 の内容もちっとも自信がありませぬので鵜呑みにされませぬよう。>all 実は OpenBSD の話題じゃない罠。>_RENAME >>100 さん げ、OpenBSD/i386 って、aout だったのか。 # ELF と aout の違いを全然理解してない厨房<洩れ あと、install.txt に /usr/lib/i18n を掘っておくことを 追加しといたほうが親切かもしれません。 お待たせしました、20030106版に更新しますたです。 http://wave.prohosting.com/sigsegv/distfiles/citrus/ 変更点: ELFで__RENAMEが正しく動くようにした(Thanks to >>99 さん)。 これでalpha、sparc64、hppaでもちゃんと動く...はず。 # まー、__RENAMEはlibcのmajorを上げて良いのならまったく必要ないんですが。 >>108 うひー、/usr/lib/i18nはmtreeが掘ってくれると信じてたんですが。 もういっぺんチェックしますです。 コソーリ、20030128版に更新のお知らせ。 変更点: fgetwc/fputwcなどのwide file io関係もNetBSD-currentからmerge これでCitrusの成果は全部取り込んだはずっす。 んで、いつもProhostingにpatchを置いとったのですが、 一部有料化するそうなので、こちら↓に移転しますた。 http://sigsegv.s25.xrea.com/distfiles/citrus/ citrusの移植をしている方がいると聞きましたが、、、。 >>112 おおっ、あなたですね。OpenBSDはユーザー少ないし、ユーザー同士の 横のつながりもあまりないので反応が無く見えるけど、期待してる人は いっぱいいる(私も含めて)と思いますよ。応援してます。 >>113 うーん。もう見れないみたい。ktermがエラー吐かずに立ち上がります? 移植(汗 つーかコピぺ程度の作業量なんで... いい忘れてたけど、Citrus patchを適用した後はX(だけじゃないけど)は -D_XLOCALE有無に関係なく作り直してちょ。古いbinaryが参照する selocaleのシンボルはsinglebyte onlyでしか動かんので。 __RENAMEで__setlocale_mb_len_max_32を参照してやらないと multibyte localeは使えないです。 # まあ、X & EUCとかだとsetlocaleが成功の戻り値を返すだけで # 表示できちゃったりする記憶もあるような... sparc64は元々MB_LEN_MAX=32だからISO2022は当然、 alphaとかはMB_LEN_MAX=6なのでUTF-8までならバイナリ互換性を 保ったpatchは作れるんだけど、i386筆頭にその他のarchはMB_LEN_MAX=1なので いっしょにmake Worldの海に溺れようってとこです。 MB_LEN_MAXのbinary非互換性は強気に無視してrecompileなしで multibyte locale仕えちゃったりする方が実は嬉しいかったりするのかもしれないと チョトだけ思った。 んで、洩れができそうな範囲でのTODO やるかどうかはわかんないけど。 足りない関数とか * fwprintf, swprintf, vfwprintf, vwprintf, vswprintf, fgetws, fputws, wscan, fwscanf, wcstok, wcswcs, wcsftime FreeBSD-currentでは実装されてる模様、 いくつかはそのまま使えるかも。未調査。 * btowc, wctob citrus_ctype_template.hで実装するなら マンドクセー(゚听)イラネ FreeBSDの実装みたいに内部でmbrtowc/wcrtombが動く簡単な奴で(・∀・)イイのかも * iswctype, wctype, towctrans, wctrans FreeBSDには中途半端な実装あるけど、NetBSD/Citrusとしては 新フレーム待ちかねぇ。NetBSDスレで煽り入ってたけど、 berkeley DB使ってlocaledef(1)(゚д゚)ウマー話とか洩れもちと気になるけど傍観。 OpenBSD固有の問題とか 気が向いたらbsd.libs.mkとかを整備、PICFLAGSつかって逃げてたりするし。 あと↓はOpenBSD的には嬉しいのかな。 http://www.netbsd.org/cgi-bin/query-pr-single.pl?number=18151 >>115 >うーん。もう見れないみたい。ktermがエラー吐かずに立ち上がります? 問題ないみたいです。 手元でサーバ立ててあげときます。 http://prim.cotton.ne.jp/openbsd/screenshots/3.3-1.jpg http://prim.cotton.ne.jp/openbsd/screenshots/3.3-2.jpg 容量がちょいとあるのと(それぞれ179.5KBと216.3KB)回線が細いのでそのあたりはごかんべん。 ちなみにこのスクリーンショットは3.2じゃなくて3.3betaつまりcurrentに 112さんのパッチをスピードハック(いや、思いきりダーティハック)したものを 使っています。 あと、XもXft周りいじってますし、KDEもQt結構いじってたり…。 gtk+も泣かされました。 とりあえず満足できるレベルになったんで近いうちにサマリまとめて、こちらに うpするか、上のURLにでもポストします。 >>112 おかげで日本語使えるようになりました。んが、依然make buildの段階で/usr/lib/i18n を掘ってくれないようです。 make releaseではやってくれてるみたいなんですが。 >>119 gtk+とかよう知らんですが、localeを認識しないってのは ・libcの場合 LC_ALL > LC_{CTYPE, MESSAGES...} > LANG ・Citrus libintlの場合 LINGUAGE > LC_ALL > LC_MESSAGES > LANG の順に環境変数を参照するので、LC_ALL=Cがセットしてあると LC_{CTYPE, MESSAGES...}, LANGはそもそも無視されることに注意して 再度環境変数を設定してもらえますか? mtreeの件はMakefileまだ読んでないです。 そのうちinstall_openbsd.txtにBUGSとしてのっける予定 documentだけ更新、 http://sigsegv.s25.xrea.com/distfiles/citrus/install_openbsd.txt make includesでなくてmake beforeinstall走らせりゃmtreeまでやってくれんのね。 トラブった方、失礼致しますた。 >>120 gtk+については素のPortsのgtk+では日本語の部分が何も表示されない状態だったのですが、 CONFIGURE_ARGSに"--with-native-locale"を追加することでOKでした。 ただ、このままではimlib回りで、 IMLIB ERROR: SHM can't attach SHM Segment for Shared Pixmap mask Wrapper Falling back on Shared XImages Imlib ERROR: SHM can't attach SHM Segment for Shared XImage mask Falling back on XImages Gdk-ERROR **: BadAccess (attempt to access private resource denied) serial 17549 error_code 10 request_code 146 minor_code 1 Gdk-ERROR **: BadShmSeg (invalid shared segment parameter) serial 17550 error_code 177 request_code 146 minor_code 5 てなエラーを吐いてクラッシュしてたので、 sysctlで kern.shminfo.shmseg=32(default 8) kern.shminfo.shmall=32768(default 8192) に変更することで回避しました。 もっともこれはx11/ogleを入れた時の設定がそのままOKだった、っーオチなんですが…。 citrusのlocale参照順序は理解しました。s/LINGUAGE/LANGUAGE/かな? LC_ALL=Cとしていたのはperlがうるさかったからなんですが、取り敢えず PERL_BADLANGでだまらせることにしました。 >>121 HEADに対応されていたのですね!早速導入してみます!! (実は121のinstall_openbsd.txtを取りに行こうとしたら、HTTP404を返されて 見に行ったらって、とこだったんですが) >>123 HEAD向けはコンパイルできるかどうかさえテストしてないです。 libpthread(3.2ではlibc_rだったやつ)あたりでヘッダ見つからんとかいって buildへくるかも。buildが通りさえすれば、OpenBSDは他の*BSDと違って releaseとcurrentには大きな違いがないんで、動作自体は支障ないとは思います。 HEAD 向けコンパイルしてみますた。 make beforeinstall するときに、幾つかヘッダが無いと言われますが、 その dir へ行って make してやればヘッダ生成されるので、改めて make beforeinstall すればOK。 そこさえ越えれば、make build は問題ないようでつ。 NetBSD-currentで * btowc, wctob(btowc('\0')がWEOF返すバグあり、send-pr済) * iswctype, wctype, iswctrans, wctrans (但しiswctype(.., wcrtpe("jkana"))とかのlocale固有機能は未サポート) * wcscoll, wcsxfrm(LC_COLLATEは未サポート) がサポートされた模様なので、patchを追従しますた。 3.2向けとHEAD向けがありますが、今回はどちらもmake releaseまでの テストはしてないです。 前のpatchからupgradeされる方は、libc.soとlib{ENCODING}.soとmklocaleの 入れ換えだけでいいです、がbuild前にmake includesを忘れずに。 btowc/wctobはちと迷ったのですが、NetBSDの実装とは違い、 内部でmbrtowc/wcrtombを直接呼ぶのではなく、citrus_ctype_template.hで 実装し、各lib{ENCODING}.soが実体を持つようにしました。 なんで、NetBSDだとlibcとmklocaleの入れ換えだけで済むのですが、 OpenBSD私家版はlibcとlib{ENCODING}の入れ換えも必須。 # SUSv3だとerrnoはno definedだけど、mbrtowc/wcrtombを直接呼ぶと # EILSEQが返ることがあるので...まあ、そのうち戻すかも。 あとFreeBSD-currentからfgetws/fputws, wcstokをパチってきたので NetBSDにsend-prしました。それが採用されればpatchにもmergeします。 vfwprintf/vfwscanfはまだ読んでないっす。 >>125 >make beforeinstall するときに、幾つかヘッダが無いと言われますが、 make beforeinstallの前にmake includesを実行すると問題ないようでつ。 send-prに[PATCH]でなくて[PACTH]とか書いちまったよ...逝ってくる >>126 手元の計算機に導入してみますた。 前回のHEAD用に公開されたバージョンからかも知れませんが、lib/libs/stdlib/multibyte.c がrejectされるようです。 /dev/nullとのdiffみたいなんでrm multibyte.c*でエェかぁ、とかやってまつ。 注意点としては前のパッチがあたっている環境故か、この計算機固有なのか追いかけ る時間が無いのでわかんないんですが、LOCALE関連の環境変数が定義されていると、 libcのインストールの段階でcore dumpまたはmemory faultしました。 取り敢えずLOCALE関連の環境変数をunsetenvすればオケですた。 4回目のコンパイル前に気づけよ>漏れ patchはChair of IMOUな方から採用したよんとのことです。 # fgetws/fputwsが抜けてたし...漏れマヌケ過ぎ。 > 4回目の ごめんなさい、btowc/wctobを追加したので lib${ENCODING}.soのABIが変わってるので 古いlibcとlib${ENCODING}.soの組合せになると落ちるんだと思います。 lib${ENCODING}.soのmajorをageるか迷ったんだけど、 まあ、本家にmergeされてる訳でもないのでそのまま放置してマスタ。 NetBSDはcitrus_ctype_fallback.[ch]とか対策入れてる模様。 流 石 だ な 、 兄 者。 追伸 libcとlib${ENCODING}のABIが揃っていれば落ちないです。 だからbuildし直す必要は無いです。unset LC_ALL LC_CTYPE LANGとかで とりあえず逃げてください。 20030308版っす。 http://sigsegv.s25.xrea.com/distfiles/citrus/OpenBSD/ 変更点 fgetws, fputws, wcstok, wcswcsの追加 en_US.UTF-8ロケールがより賢くなった(つかマージ忘れ) ABIの変更でlib${ENCODING}のminorをbump あーんど、いくつかのbug fixを含みます。 1. IS_RUNE_CACHEDマクロがtypoで正しく動作しない 2. hppaとpowerpc系のarchで_BSD_WINT_T_ & _BSD_RUNE_T_の定義がansi.hに 存在せず、おそらくcompileできてなかった 3. /usr/share/nls.aliasがインストールされてなかった んで、CVS repositoryを作り直したついでに、patchを xpg4dl.patchとrename.patchの2つに分けたので、 install-{HEAD, OPNBSD_3_2}.txtを更新しました。 んで、別の作業がやりたいんでOpenBSDは一応これで安定版とし しばらく更新しない予定。 # stdioまわりにthread safeの為のlock/unlockが実装されだすまでは # conflictもでないと楽観。 そいじゃ。 /usr/share/nls.aliasでなくて/usr/share/nls/nls.aliasね。 >>133 >んで、別の作業がやりたいんでOpenBSDは一応これで安定版とし >しばらく更新しない予定。 ># stdioまわりにthread safeの為のlock/unlockが実装されだすまでは ># conflictもでないと楽観。 ホントにおつかれさまでした。 お蔭様で、管理しているサーバともどもデスクトップも全てOpenBSD化 できますた。 今mac68kでコンパイル中ですがいったいいつ終るやら…。 #すでに4日経過…。 バカ>漏れ >>135 > お蔭様で、管理しているサーバともどもデスクトップも全てOpenBSD化 > できますた。 デスクトップをOpenBSD化する利点は? >>136 管理しているサーバ用のcvsリポジトリが使えるようになったことで パッケージのアップデート等で回線を逼迫しなくなった点。 使っている環境の回線が細いので。あとは「利点」というより個人的 趣味です。 ダレモイナイ... xpg4dl-20030409ヲリリーススルナライマノウチ... ChangeLog: * OPENBSD_3_3 branch対応 * 最新のNetBSD-currentへの追従 - wcstoll, wcstoullの追加(wcstoimax, wcstoumaxはOpenBSDの事情により未merge) - gbk2k module、zh_CN.GB18030ロケールの追加 >>138 ご苦労さまです。currentのXFree86が4.3.0になったお蔭で大方の パッケージを再コンパイルするハメに…。 結果報告が遅れてしまいますた。近々デスクトップのスナップを 撮り直します。 >>140 >パッケージを再コンパイルするハメに…。 こんなことやってるウチにsource-changes@cvs.openbsd.orgからのメールが…。 >CVS: cvs.openbsd.org: www >From: >Dale Rahn <drahn@cvs.openbsd.org> > >To: >source-changes@cvs.openbsd.org > >日時: >今日 14:17:01 > >CVSROOT: /cvs >Module name: www >Changes by: drahn@cvs.openbsd.org 2003/04/16 23:17:01 > >Modified files: > faq : upgrade-minifaq.html > >Log message: >Document that i386 has moved to ELF and we will NOT support source updates. (ようやく?)ELFなっちゃうすか…。安定するまで静観するス。 OpenBSDを日本語環境してデスクトップで利用している人はいない、ってことでファイナルアンサー? >>146 >>145 じゃ無理なんだよ。まあ、アホはスルーするなりしてほっとけよ。 >>147 145=146 自作自演で荒したいんじゃネーノ sage 進行っつったって、沈み過ぎ。 このスレ無くなってもらっちゃ困るし、活性化を祈念して age しもた、xpg4dl-20030409 のリンク先がなくなってる。弱ったな。 どこか or 誰か保存してない?<HEAD-xpg4dl-20030409.tar.bz2 >>154 これを機会にWindowsに移行する事を勧める。 Windows使えば、そんなくだらない事で悩まなくていいし。 今みたいに、自己満足ばかりの生活から脱却できるよ。 非常に有益な素晴しい時間を過したければWindowsを使おう。 >>158 多謝。ゲトできました。 さっきアクセスできなかったのは、ネットワークトラブルだったんだろか…? >>161 typo ハケーン。 /usr/src/etc/mtree/4.4BSD.dist の 1025 行目 誤:en_GR.ISO8859-7 正:el_GR.ISO8859-7 ですよね? >>165 導入してみますた。 導入自身は問題なかったのですが、setenv LC_CTYPE ja_JP.eucJPとかやると、 "Wrong dl symbols!"とか言われたり。 導入方法は"INSTALL"を参考にしますた。 >>166 それって、install 失敗して途中で止まってやしませんか? >>165 make obj してから make build すると、以下な具合に止まるようです。 > install -c -o root -g bin -m 444 /usr/src/share/i18n/csmapper/obj/ISO646/ISO646-BASIC@1983%UCS.646 //usr/share/i18n/csmapper/ISO646/ISO646-BASIC@1983%UCS.646 > install: /usr/src/share/i18n/csmapper/obj/ISO646/ISO646-BASIC@1983%UCS.646: No such file or directory > *** Error code 71 > > Stop in /usr/src/share/i18n/csmapper (line 51 of /usr/src/share/i18n/csmapper/Makefile). 私は、とりあえず /usr/src/share/i18n/csmapper/ISO646/Makefile.inc を 32c32 < OBJDIR_ISO646-${i:S/:/@/}%UCS.646= ${.OBJDIR}/ISO646 --- > OBJDIR_ISO646-${i:S/:/@/}%UCS.646= ${.CURDIR}/ISO646 てな具合にして無理やり通してみましたが、どうするのが正しいかは よくわかりません。 # まだ、build ちう どうやら、無事 build 出来た模様。i386 です。 アク禁中につきレス遅くなってスマソ。 >>166 さん archは何ですか? そのメッセージは/usr/libexec/ld.soにdlfcn系の関数が無くて libc.soのdlfcn_stub.cが使われる時に出るもののようです。 http://www.openbsd.org/cgi-bin/cvsweb/src/lib/libc/dlfcn/dlfcn_stubs.c?rev=1.7&content-type=text/x-cvsweb-markup xpg4dl/iconvフレームはdlopenとdlsymに依存してるので、 それが機能してないとmultibyte localeもiconvも動かないです。 そのようなarchや、static linked binaryでも http://www.netbsd.org/cgi-bin/query-pr-single.pl?number=18151 みたいに全部libcが抱えこんじゃうよなoptionを用意してmultibyte localeを 使うよううすることも出来るんですが... するとXPG4"DL"で無くなる罠。 dlfcn系がサポートされているarchでも、ここ最近の-currentで ld.soにいろいろ修正が入ってるようなので、それが影響しているのかも... # 少なくとも20030920の-current/i386では動いとります。 >>167 さん そこでbuildがコケるのは漏れのミス100%でつ。 そのpatchで正解、ありがとうございます。 反映版を近いうちに用意いたしますです。 >>167 make obj後にエラーを起こすのは分かっていたので、${SRC_DIR}で、make cleandir 後にmakeしますた。 >>169 archはi386でつ。 ソースツリーはCVSで-D20030920を使っていたと思いますが、現在導入したPCが、 メモリか電源不良を起こして、まともに起動できなくなっていたり・・・。 修理したらまたトライしてみまつ。 >>169 CVSオプションで-D20030920を指定していたつもりが、CVS/Tagを見てみたら、 20030919でトホホなオチだったよーでつ。 CVS/TagがD2003.09.20.15.00.00で導入してみますた。(i386) setenv LANG ja_JP.eucJPやsetenv LC_ALL ja_JP.eucJPだと、相変わらず、 "Wrong dl symbols!"が出てきますが、setenv LANGUAGE ja_JP.eucJPだと、 何事もなく…。 >>169 >そのメッセージは/usr/libexec/ld.soにdlfcn系の関数が無くて >libc.soのdlfcn_stub.cが使われる時に出るもののようです。 nm /usr/libexec/ld.so |grep " dl"したところ、 (略) 000026a0 T dlopen 0000285c T dlsym となっているのでこれは問題なし…? とりあえず、setenv LANGUAGE ja_JP.eucJPでkterm上で無事日本語入力や、 表示が出来ているので満足していまつ。 >>174 > setenv LANG ja_JP.eucJPやsetenv LC_ALL ja_JP.eucJPだと、相変わらず、 > "Wrong dl symbols!"が出てきますが、 このメッセージ出ること自体どっかぶっ壊れてるんでつよねー > setenv LANGUAGE ja_JP.eucJPだと、 > 何事もなく…。 環境変数 LANGUAGE は gettext(3) の為のもので、 setlocale(3) は一切関知しません、よって何も発生しないでしょう つーことで > とりあえず、setenv LANGUAGE ja_JP.eucJPでkterm上で無事日本語入力や、 > 表示が出来ているので満足していまつ。 setenv LANGUAGE〜では setlocale(3) は C locale で動作してるはずなので kinput2にktermは日本語表示/入力できない筈なんですが... 漏れのところではどーにも再現しないので /etc/mk.conf /usr/libexec/ld.so /usr/lib/libc.so.* /usr/lib/i18n/libEUC.so.* /usr/share/locale/ja_JP.eucJP/LC_CTYPE /usr/X11R6/lib/libX11.so.* /usr/X11R6/lib/libXaw.so.* /usr/X11R6/lib/X11/locale/ja/* /usr/X11R6/lib/X11/locale/lib/common/x*.so.* /usr/X11R6/lib/X11/config/OpenBSD.cf /usr/local/bin/kinput2 /usr/local/bin/kterm を固めてどっかにうpしてもらえれば、調査してみまつ... >>173 >漏れのところではどーにも再現しないので >/etc/mk.conf >/usr/libexec/ld.so >/usr/lib/libc.so.* >/usr/lib/i18n/libEUC.so.* >/usr/share/locale/ja_JP.eucJP/LC_CTYPE >/usr/X11R6/lib/libX11.so.* >/usr/X11R6/lib/libXaw.so.* >/usr/X11R6/lib/X11/locale/ja/* >/usr/X11R6/lib/X11/locale/lib/common/x*.so.* >/usr/X11R6/lib/X11/config/OpenBSD.cf >/usr/local/bin/kinput2 >/usr/local/bin/kterm >を固めてどっかにうpしてもらえれば、調査してみまつ... ありがとうございます・・・。って、 >/usr/X11R6/lib/X11/locale/lib/common/x*.so.* は存在しないようでつ。 とりあえず、ソコ以外を固めて以下のURLに置いてもらいますた。 ttp://mahodo.jp/~admin/patched_openbsd.tar.gz >>/usr/X11R6/lib/X11/locale/lib/common/x*.so.* >は存在しないようでつ ↓を忘れておりました。 http://www.openbsd.org/cgi-bin/cvsweb/XF4/xc/config/cf/OpenBSD.cf.diff?r1=1.1.1.6%3AXFREE86_4_3_0&tr1=1.1&r2=1.122%3AHEAD&tr2=1.122&f=u +/* Dynamic loading of i18n modules in libX11 has too many problems for now */ +#ifndef BuildLoadableXlibI18n +#define BuildLoadableXlibI18nNO +#endif >とりあえず、ソコ以外を固めて以下のURLに置いてもらいますた。 >ttp://mahodo.jp/~admin/patched_openbsd.tar.gz うちの環境にlibcその他をコピーしていろいろ動かしてるのですが、 "Wrong dl symbol"などの警告は一切出てこないでつね。 kinput2、ktermの組み合わせも LANGUAGE=ja_JP.eucJP -> 動かない LC_ALL=ja_JP.eucJP -> 動く つまり正常にbuildできてるとしか思えない状態。つーことで、 1. メモリの不良がないこと http://www.memtest86.com/ 2. LD_PRELOADやLD_LIBRARY_PATHなどの環境変数で、 壊れたlibcなどを読み込んでいない事 以上2点をちょっと確認してもらえまつか? 173を訂正、漏れの環境でも(誰の環境でも)発生シマスタ、ひらにゴメソ。 setlocale(3)が内部でdlopen(3)に依存してるのは前述でつが、 static linked binaryの場合は、当然libc側のdlopen (/usr/src/lib/libc/dlfcn/dlfcn_stubs.c)が使われます。 んで、static dlopen(3)の中の人がprintfで余計なメッセージを垂れ流してるわけですな... http://www.openbsd.org/cgi-bin/cvsweb/src/lib/libc/dlfcn/dlfcn_stubs.c?rev=1.7&content-type=text/x-cvsweb-markup NetBSDだと、無言なのだが。 http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libc/dlfcn/dlfcn_elf.c?rev=1.4&content-type=text/x-cvsweb-markup 単純明快には、dlfcn_stubs.cから全てのprintfを消しちまえ、ってとこですね。 つかせめてwarnx(3)つかってくれよぉ〜。標準出力にだすなよぉ〜。 んで、パッチ。 --- dlfcn_stubs.c.orig2003-10-11 17:56:56.484375000 +0900 +++ dlfcn_stubs.c2003-10-11 17:57:14.328125000 +0900 @@ -45,21 +45,18 @@ void * dlopen(const char *libname, int how) { -printf("Wrong dl symbols!\n"); return NULL; } int dlclose(void *handle) { -printf("Wrong dl symbols!\n"); return 0; } void * dlsym(void *handle, const char *name) { -printf("Wrong dl symbols!\n"); return NULL; } 会社が倒れるは、導入してたマシンのマザーのコンデンサは抜けるは、でアクセス 出来ませんでした。 で、手元にあったK6-533MHzなマシンに3.4を導入した上で、パッチ当ててみまし たところ、無事機能しますた。 当面はcurrent追っかける余裕も無いのでしばらくおとなしくしときまつ。 >>178 私も(180な方と同様)3.4に入れてみました(xpg4dlを)が、動いている ようです。mozilla-firebirdで日本語のウィンドウタイトルも表示 されているし(今、書いているのはOpenBSD3.4の環境なのでmozillaでの 日本語入力も問題なくできているという事です)メーラのsylpheed等も 問題なく使えてます。(fvwm2-i18nを作り直して、gtk+を作り直して…… しましたが) ちなみに、P150なノートパソコンなので、XPG4DLを入れる時には最後の make buildだけでも↓な感じでした。(11.5時間以上掛かりました) # cd /usr/src ; time make build 30082.4u 6198.5s 11:35:18.30 86.9% 0+0k 233261+882661io 70264pf+0w >>181 新年明けましておめでとうございます。 昨年の11月から、システム管理の仕事に就きました。 まだ、C言語やシェルスクリプトからシステムコールのことも満足にできない 状態でUNIXだけで食っていってる状態ですが、これからシステム管理を極めつつ プログラミングの技術もつけてさらに磨きをかけてくつもりです。 mozillaでの日本語入力ができていると聞いて驚きを隠せない状態です。 これもオープンソースのもつ凄さなのでしょうかね。 matz 日記経由でこのスレッドにたどり着いた人の数 ↓ http://www.deadly.org/article.php3?sid=20040112115112 あいかわらず盛り上がらないねぇ。 >>175 とかからの勝手な推測だけど、 dlopen()を使わない(オプションを用意する)方向でないと OpenBSD的にはmergeできんのかなーと思ったりするこの頃。 そういや>>186 のpatchは >>177 相当が入ってないとか strerror()でEILSEQが変換できんとか、バイナリ互換崩れてるとか ちと気になるところがいくつかありました。 # 洩れみたいに__RENAMEまで持って来るのもどうかと思うけど。 Marc Espieが3.6くらいには入ると発言してるので期待していいのかな? http://sigsegv.s25.xrea.com/diary/?20040104#04-1-2 このCNS-UCSの対応って何を元にしてますか? Unicode.orgのOBSOLETEな変換表ではないみたいですけど >>189 tp://ftp.unicode.org/Public/4.0-Update1/Unihan-4.0.1d5b.txt.gz を grep kCNS1992 した結果が元になってます。 # tp://ftp.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/CNS11643.TXT # こっちは見てませんでした。 Unihan.txtにはplane-1の前半の非漢字部分の変換表が含まれてなかったので、 ttp://www.cns11643.gov.tw/eng/seek_08.jspで調べました。 # ひらがなもplane-1に入ったようだけども、未反映。 IBM ICUはttp://kanji.zinbun.kyoto-u.ac.jp/~yasuoka/ftp/CJKtable/Uni2CNS.Z が元みたいですね。 3.5のスナップショットではfirefoxで日本語は 見たことないような表示になった。3.4では 何もせずにmozillaで日本語を見て感動したけど。 3.5のドキュメントが整備されらどうすればいいのか わかるのか??? >>191 もう既に整備されてるのですが、、、何か。 仮にされてても、何故どうすればいいか分からないか小一時間問い詰めたい。 ドキュメントを読もうといふ姿勢も感じられませんな。 ↑....どうぞお許しを。 結論としてはOpen BSDで日本語 がサポートされるまで待ちです。 安直なへたれですがOpen BSDが 好きです。 citrusをOpenBSD-currentに入れる作業が進行中ですが、__RENAME()がないとかその他いいろな理由で進んでいません。もしcitrus patch(ちゃんとうごくやつ)を隠し持っているひとがいたら是非お送りください。 >>196 どのへんが merge の障害なのか、議論のポインタを知らないので 役に立つかどうかは判りませんが、↓こちらに置きました。 http://sigsegv.s25.xrea.com/distfiles/citrus/OpenBSD/HEAD-citrus-20040710.tar.bz2 最新(2004/07/10) の OpenBSD / NetBSD 両 HEAD branchに同期済です。i386で full buildが通ることと、昔のCitrus CVS repositoryにあったtest1, test2で NetBSD-currentと結果の相違が無いことを確認してあります。 NetBSD から mergeしきれていないのは 1. usr.bin/locale stringlist.h が無い、sys/queue.hなり使って書き直す必要あり。 2. wcsto(u)imax(3) (u)intmax_tが無い、inttypes.h とか、c99 回りが整ってからでいいような。 くらいですかね。 この tar.bz2 には patch が2つ含まれます。 citrus.patch の方がメインで kevlo AT openbsd DOT org 氏 (ttp://www.kevlo.org/citrus/index.html) や kurati 氏 (ttp://www.nurs.or.jp/~kurari/bsd/index.html) が作成されてるモノと(__RENAME()とか__SETLOCALE_SOURCE__の扱い以外) あんまり変わらないはず。 ただ↑だけでは binary compatibility 上 1. MB_LEN_MAX 1 -> 32 2. sys_{nerr,errlist} (EILSEQが追加になるので) という問題が残りますので、対策として rename.patch を用意してあります。 rename.patch は NetBSD から __RENAME() を lint(1) への hack 含め、 一式貰ってくるという乱暴な方法なので、 OpenBSD 的にはそれはOKなのかちょっと疑問です(だから役に立ちそうもない)。 そもそもOpenBSD って結構頻繁に libc の major version が上がるのですけど、 citrus を import したタイミングで bump up できないのでしょうか? それなら __RENAME() を持ってきたりする必要はないので、 citrus.patch を merge するだけで終りという認識なのですが。 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる