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

[debian-devel:14388] Re: dgs



反応が遅くなってすみません。

佐野@浜松です。

In <87y9q58srl.wl@xxxxxxxxxxxxxxxxxxxx>,
 on "Wed, 4 Jul 2001 09:03:47 +0900",
  Ryuichi Arafune <arafune@debian.org> さん wrote:

> >>>>> In [debian-devel : No.14356] 
> >>>>>	Taketoshi Sano <kgh12351@xxxxxxxxxxx> wrote:
> T.S.> 佐野@浜松です。
> 
> T.S.> P.S.
> T.S.>  荒船さん、dgs の件 (Bug #100972) は解決できそうですか ?
> 
> すいません。本業が忙がしく対処できていません。
> 主な理由
> 	1) dgs は現在 potato にしかない(はず) → woody 以降は削除した。
> 	2) woody 環境では現在(なぜか) build できない。
> 	3) 手元に potato 環境が無い。
> もちろん、あらたにpotato環境を作りだしてやるってのも手なんですが、
> ちょっと時間がありません。 佐野さんの方で時間があったらNMUして
> いただけると、私としては非常にありがたく思います。

まだ NMU できるような状況ではない (bug の修正まではしていない) 
のですが、とりあえず i386 な woody 環境で dgs_0.5.9.1+000216-6 を
 build できるようにはなりました。

エラーのログを script で取ってみると、

 (これは new upstream の 0.5.10 を make した時のログですが、
  エラーの内容は同様でした)

gcc `cat ./obj/cc.tr` -DDISPLAYGHOSTSCRIPT -DVERSION=\"0.5.10\" -DGS_VERSION=\"5
.50\" -O2 -Wall -Wcast-align -Wstrict-prototypes -Wwrite-strings -fno-common -g 
-O2 -DHAVE_TCPD_H -DHAVE_SYSLOG_H -I. -I./obj -I. -I./obj  -o ./obj/zdevcal.o -c
 ./zdevcal.c
./zdevcal.c: In function `calendar_get_params':
./zdevcal.c:52: storage size of `ltime' isn't known
./zdevcal.c:54: dereferencing pointer to incomplete type
./zdevcal.c:54: initializer element is not constant
./zdevcal.c:54: (near initialization for `items[0].offset')

となっており、該当する部分のコードは

/* Get the date and time. */
private int
calendar_get_params(gx_io_device * iodev, gs_param_list * plist)
{
    int code;
    time_t t;
    struct tm *pltime;
    struct tm ltime;
    static const gs_param_item_t items[] = {
        {"Year", gs_param_type_int, offset_of(struct tm, tm_year)},
        {"Month", gs_param_type_int, offset_of(struct tm, tm_mon)},
        {"Day", gs_param_type_int, offset_of(struct tm, tm_mday)},
        {"Weekday", gs_param_type_int, offset_of(struct tm, tm_wday)},
        {"Hour", gs_param_type_int, offset_of(struct tm, tm_hour)},
        {"Minute", gs_param_type_int, offset_of(struct tm, tm_min)},
        {"Second", gs_param_type_int, offset_of(struct tm, tm_sec)},
        gs_param_item_end
    };


こんな感じ。つまり struct tm が認識されていない現象。これはわりと
最近 (といっても 1 ヶ月やそこら前 ?) に time 関連の関数を使う場合
 sys/time.h の include だけでは NG で time.h の include が必須に
なったという話 (fdclone とか、あと他にもこれで bug report もらった
ことがあったな) に関係しそうだな、と思ってこのファイルから include
されている time_.h を見てみるとやはり

/*
 * Some System V environments don't include sys/time.h.
 * The HAVE_SYS_TIME_H switch in gconfig_.h reflects this.
 */
#ifdef HAVE_SYS_TIME_H
#  include <sys/time.h>
#  if defined(Plan9) || defined(M_UNIX) || defined(_IBMR2) || defined(_SEQUENT_)
        /* Plan 9, SCO, AIX and Sequent's DYNIX/ptx need both time.h and sys/time.h! */
#    include <time.h>
#  endif
#else
#  include <time.h>
#  ifndef __DECC
struct timeval {
    long tv_sec, tv_usec;
};

#  endif

となっていて Linux の場合には time.h が include されない。

なので、とりあえずここを

/*
 * Some System V environments don't include sys/time.h.
 * The HAVE_SYS_TIME_H switch in gconfig_.h reflects this.
 */
#ifdef HAVE_SYS_TIME_H
#  include <sys/time.h>
#  if defined(linux) || defined(Plan9) || defined(M_UNIX) || defined(_IBMR2) ||
defined(_SEQUENT_)      /* Linux (glibc2.2), Plan 9, SCO, AIX and Sequent's DYNIX/ptx need both time.h and sys/time.h! */
#    include <time.h>
#  endif
#else
#  include <time.h>
#  ifndef __DECC
struct timeval {
    long tv_sec, tv_usec;
};

#  endif

として linux な環境でも time.h を include させるようにすると
 (従来は sys/time.h から time.h を include していたので
  昔の環境でも特に問題は起きないはず) 
ひとまず

dgs_0.5.9.1+000216-6_i386.deb
dpsclient-demos_0.5.9.1+000216-6_i386.deb
dpsclient-dev_0.5.9.1+000216-6_i386.deb
dpsclient_0.5.9.1+000216-6_i386.deb

を手元の woody 環境で build できました。

それはいいのですが Build-Depends が無いとか、lintian にかけると
いろいろと警告が出ますね。

ところで「woody 以降は削除した」というのは、woody 以降では
 dgs は不要になったということですか ? ちょっと調べた範囲では
代替になるパッケージが見つからなかったような気がするんですが。

もし sid/woody にも必要、という話なら、unstable への NMU に
ついては検討してみます。

 sgmltools-lite を更新セヨ! という指令が aph 方面から出ているので
そっちの bug fix もしないといけないので週末はそちらの作業を予定
しているのですが、もし時間が取れたら dgs のほうも見てみようかと
思います。

あと yatex の wishlist 来てたな、、、 いっそ上川さん yatex を
 adopt しませんか ? 養ってもらえるならお譲りしますけど。

他にも extipl と fdclone の new upstream release 追随や
 ncurses-base の linux entry への bug report も宿題になってたり。 

うーん、いまちょっと dgs のコード見てみましたけど、
サブディレクトリ gs/ の Makefile はそのまま使うみたいだから、
直接これを debian diff でいじってしまってもいいんじゃないかな。

こいつの

datadir = ${prefix}/share
gsdir = $(datadir)/ghostscript

となっているところを、例えば

gsdir = $(daradir)/dgs

とかしてしまえば (あるいは gsdir = $(datadir)/dgs/ghostscript とか)
他のパッケージと干渉しなくなっていいんじゃないかな、とか。
まだ試してませんが。

 (今日はもう寝ます。明日も仕事だし。)

--
     # (わたしのおうちは浜松市、「夜のお菓子」で有名さ。)
    <kgh12351@xxxxxxxxxxx> : Taketoshi Sano (佐野 武俊)