2007-09-29

苦戦…、少し弱気。

SourceForge.net Logo
Tcl/Tk 8.5b1 がリリースされたので、早速クロスコンパイル環境でコンパイルをはじめていますが、苦戦しています。コアの Tcl/Tk については簡単にビルドできるのですが、拡張パッケージはそうはいきません。

Tcl/Tk は次のようなスクリプトを用意して実行すればビルドできます。

#!/bin/sh
export INSTDIR=${HOME}/mingw/build

# constants
export ver_tcltk="8.5b1"
export ver_major="85"
export ver_major2="8.5"

export prefix_tcltk=""

export target=i386-mingw32
export CC=${target}-gcc
export AR=${target}-ar
export LD=${target}-ld
export RANLIB=${target}-ranlib
export RC=${target}-windres

# remove old sources
echo "### Removing old sources & binaries"
rm -fR tcl${ver_tcltk}
rm -fR tk${ver_tcltk}


# extract sources
echo "### Expanding sources to build"
tar zxvf tcl${ver_tcltk}-src.tar.gz
tar zxvf tcl${ver_tcltk}-html.tar.gz
tar zxvf tk${ver_tcltk}-src.tar.gz

# build Tcl
echo "### build Tcl"
cd tcl${ver_tcltk}/win
./configure --prefix=${prefix_tcltk} --host=${target} --enable-threads
make INSTALL_ROOT=${INSTDIR}/tcl${ver_tcltk} install
cd ../..

# build Tk
echo "### build Tk"
cd tk${ver_tcltk}/win
./configure --prefix=${prefix_tcltk} --host=%{target} --enable-threads --with-tc
l=../../tcl${ver_tcltk}/win
make INSTALL_ROOT=${INSTDIR}/tk${ver_tcltk} install
cd ../..

# add .tcl to Tk demo script
mv ${INSTDIR}/tk${ver_tcltk}/lib/tk${ver_major2}/demos/widget ${INSTDIR}/tk${ver
_tcltk}/lib/tk${ver_major2}/demos/widget.tcl

Tcl/Tk のソースは、unixwin と OS 固有の部分が分かれているために、クロスコンパイル環境でも、Cygwin など Win32 環境と同じようにコンパイルできてしまいますが、拡張パッケージはそうはうまくいきません。

例えば、configure スクリプトを実行する際、uname -s コマンドなどで実行環境を判断してしまうため、MinGW のクロスコンパイル環境と Linux の環境がごちゃ混ぜになった Makefile が生成されてしまいます。具体的には、拡張パッケージ thread2.6.5 を、Tcl/Tk と同じようにビルドしようとすると、一応コンパイルは通りますが、thread265.dll ではなく libthread2.6.5.so が生成されます。Incr Tcl/Tk や TclX となると、コンパイルも通りません。

Makefile をゴリゴリと修正すればクロスコンパイルができそうですが、なんだかあまりスマートなやり方とは思えません。そういうやり方をすると、今後、同じやり方を維持できるかどうか不安です。そこで、tcl.m4 などをクロスコンパイル用に書き換えてコンパイルできるようにしようとしています。しかし、まだうまくいっていません。時間がかかりそうです。

Tcl/Tk8.5b1 を使いたいので、とりあえず Cygwin 環境を使ったパッケージも用意しようかとコンパイルを始めています。クロスコンパイル環境の構築に少し弱気になっています。

2007-09-26

Tcl/Tk8.5b1



Tcl/Tk 8.5 の最初のβ版が9月26日付けでリリースされました。β版では新機能の追加がないはずですので、あまり長い時間をかけずに正式版 8.5.0 がリリースされることを望むばかりです。デバグを精力的にしなければ…。

今週末に、Linux 上の MinGW Cross Compiler でコンパイル、インストーラを作成して、ビットウォーク版 Tcl/Tk 8.5 for Windows をリリースする予定です。なお、今回から MinGW Cross Compiler で生成した Tcl/Tk のバイナリは、MinGW Cross Compiler のプロジェクトサイトで、

[PRODUCT] Tcl/Tk

というパッケージ名で公開します。もちろん、Inno Setup でパッケージを生成したインストーラとして公開します。

全てがクロスコンパイル環境でコンパイル可能かどうか、まだ確認していませんが、現時点で収録予定の拡張パッケージは次の通りです。

- Tcl/Tk 8.5b1
- Thread
- TkCon
- TclX
- Incr Tcl/Tk
- Incr Widgets
- Tcllib
- BWidget
- Tktable
- Tile
- TbcLoad
- TclCompiler
- ICONS

何か他に同梱をご希望の拡張パッケージがあればコメントを下さい。
ただし、tkImg と BLT はもともと同梱したいパッケージなのですが、ビルドの成功に至っていません。また、snack のビルドは DirectX の開発環境が一部必要になるので、今のところクロスコンパイル環境では対応しません。Linux 上でのクロスコンパイルとは別件になりますが、このパッケージだけ Cygwin 環境でビルドできないかどうか試してみようかとも思っています。

以下は Don Porter 氏が送信したリリースアナウンスのメールです。

Date: Wed, 26 Sep 2007 09:23:59 -0400
From: dgp at nist.gov
To: tcl-core@lists.sourceforge.net
Subject: [TCLCORE] Tcl/Tk 8.5b1 RELEASED

Tcl/Tk 8.5b1 Release Announcement
September 26, 2007

The Tcl Core Team is pleased to announce the 8.5b1 releases of the Tcl
dynamic language and the Tk toolkit. This is the first beta release of
Tcl/Tk 8.5. More details can be found below. We would like to express
our gratitude to all those who submit bug reports and patches. This
information is invaluable in enabling us to identify and eliminate
problems in the core.

Where to get the new releases:
------------------------------

Tcl/Tk 8.5b1 sources are freely available as open source from the Tcl
Developer Xchange web site at:

http://www.tcl.tk/software/tcltk/8.5.html

This web page also contains additional information about the releases,
including new features and notes about installing and compiling the
releases. Sources are always available from the Tcl SourceForge
project's file distribution area:

http://sourceforge.net/project/showfiles.php?group_id=10894

For additional information:
---------------------------

Please visit the Tcl Developer Xchange web site:

http://www.tcl.tk/

This site contains a variety of information about Tcl/Tk in general, the
core Tcl and Tk distributions, Tcl development tools, and much more.

Thank you for your contributions:
---------------------------------

As usual, this release includes contributions from the Tcl community.
We have a page honoring these contributors at:

http://www.tcl.tk/software/tcltk/contributors.html

Summary of Changes since Tcl/Tk 8.5a6:
--------------------------------------

The following were the main changes in Tcl/Tk 8.5b1. A complete list
can be found in the changes file at the root of the source tree. The
more complete ChangeLog is also included with each source release.

This is a beta release of 8.5. The beta designation means that the
feature set for 8.5 is believed to be complete, and the focus is now
on testing and bug fixing moving quickly toward an 8.5.0 release.
All relevant bug fixes (and some more) up to and including 8.4.16 changes
are included in 8.5b1. The following list focuses on new features added
so far in 8.5. This release is a development release, and should only be
considered for deployment use after considerable testing.

* Removed support for {expand} syntax
*** POTENTIAL INCOMPATIBILITY with 8.5 alphas only ***

* [TIP 145] Enhanced font handling.

* Tcl variable memory efficiency improved.
*** POTENTIAL INCOMPATIBILITY for users of internal structs ***

* Leave traces created during traced command execution do not fire.
*** POTENTIAL INCOMPATIBILITY ***

* Restored 8.4 compatibility of [package require -exact]
*** POTENTIAL INCOMPATIBILITY with 8.5 alphas only ***

* Revised parser expands {*} literals instead of returning a
TCL_TOKEN_EXPAND_WORD token
*** POTENTIAL INCOMPATIBILITY with 8.5 alphas only ***

* Tcl_GetObjType("nsName") no longer supported.
*** POTENTIAL INCOMPATIBILITY ***

* Fixed crash in nested [dict update].
*** POTENTIAL INCOMPATIBILITY with bytecode from 8.5 alphas ***

* Fixed panic in [text] DLine layout.

* Fixed crash in ::errorInfo traces.

* Fixed crash in [grid *configure].

* Improved Aqua ttk::combobox appearance.

* Fixed interactive tclsh failure to prompt for continuation line when
entered line ends with backslash-newline.

* Make [interp limit -command] able to stop [while 1 {}].

* Fixed open mode "a+".

* [info] is a [namespace ensemble].

* Set tcl_platform(user) from system, not environment.

* [clock] tzdata updated to Olson's tzdata2007g.

--

Tcl Core Team and Maintainers
Don Porter, Tcl Core Release Manager

2007-09-24

Open Source Conference 2007 Tokyo/Fall

0月5・6日にオープンソースカンファレンス2007が大田区産業プラザ(PiO)で開催されます。

今のところセミナーへ受講予定はありませんが、登録だけはとりあえず済ませてしまいました。協賛団体の展示などがありそうなので、6日に行ってみようかと思案中。

2007-09-22

Tcl/Tk 8.4.16


月21日付けで Tcl/Tk 8.4.16 がリリースされました。今回のリリースは、バグフィックスをしたパッチリリースです。

Tcl/Tk 8.4.0 がリリースされたのは2002年9月10日のことですから、かれこれ5年もバージョン 8.4 系を使い続けていることになります。これは、プロジェクトの活動が昔に比べると活発でなくなってきているせいかもしれません。Usenet の comp.lang.tcl への投稿はそこそこ活発なようですが、コアチームのメーリングリストにはあまり投稿されていません。

企業が Tcl の開発活動をバックアップしていた時代は、専業で取り組むことができましたが、現在のような、ほとんどのメンバーがパートタイムで、しかも直接お金にならないことの開発に時間を割かなければならないという状況では限界があるでしょう。それでも、ActiveState 社が、間接的にではあるものの ActiveTcl をリリースするなどのバックアップをしてくれているので、現在もプロジェクトの活動が維持できているのだと思います。

それなのに、なぜ、わざわざビットウォーク版の Tcl/Tk をリリースするのか?要するに自分が使いたいパッケージだけを集めて自由に、かつ便利に Tcl/Tk を使いたいからです。インターネットで公開をしますが、インストーラ作りは、半ば趣味みたいなものです。

さて、いままでのリリース状況から察するに、まもなく Tcl/Tk 8.5b1 がリリースされると思います。既に以前の投稿でアナウンスしましたが、次の Windows 用のビットウォーク版 Tcl/Tk は、Linux 上のクロスコンパイル環境でパッケージを作成してリリースします。

Date: Fri, 21 Sep 2007 15:03:14 -0400
From: dgp at nist.gov
To: tcl-core at lists.sourceforge.net
Subject: [TCLCORE] Tcl/Tk 8.4.16 RELEASED

Tcl/Tk 8.4.16 Release Announcement
September 21, 2007

The Tcl Core Team is pleased to announce the 8.4.16 releases of the Tcl
dynamic language and the Tk toolkit. This is the sixteenth patch release
of Tcl/Tk 8.4. More details can be found below. We would like to
express our gratitude to all those who submit bug reports and patches.
This information is invaluable in enabling us to identify and eliminate
problems in the core.

Where to get the new releases:
------------------------------

Tcl/Tk 8.4.16 sources are freely available as open source from the
Tcl Developer Xchange web site at:

http://www.tcl.tk/software/tcltk/8.4.html

This web page also contains additional information about the releases,
including new features and notes about installing and compiling the
releases. Sources are always available from the Tcl SourceForge
project's file distribution area:

http://sourceforge.net/project/showfiles.php?group_id=10894

Binaries for most major platforms are available from:

http://www.activestate.com/Tcl

For additional information:
---------------------------

Please visit the Tcl Developer Xchange web site:

http://www.tcl.tk/

This site contains a variety of information about Tcl/Tk in general, the
core Tcl and Tk distributions, Tcl development tools, and much more.

Summary of Changes since Tcl/Tk 8.4.15:
--------------------------------------

The following were the main changes in Tcl/Tk 8.4.16. A complete list
can be found in the changes file at the root of the source tree. The
more complete ChangeLog is also included with each source release. This
is a patch release, so it primarily included bug fixes and corrections
to erratic behavior. Below are only the most notable changes.

* Many Aqua/Tk bug fixes and improvements, see Tk changes file.

* New Tcl feature: DTrace provider (http://wiki.tcl.tk/DTrace)

* Fixed buffer overrun in animated GIF support.

* Fixed buffer overrun in [clock format ... %c].

* Fixed crash with multibyte characters in menu labels.

* Fixed [thread::join] crash on 64-bit Unix.

* Fixed crash in thread sync objects.

* Fixed crash in Tcl_UpdateLinkedVar().

* Fixed hang in Tcl_CreateTrace() traces.

* Fixed blue/red reversal in [wm iconphoto] icons on Windows XP.

* tcltest 2.2.9 permits "_" and ":" in test constraint names.

* Fixed build problems on SunOS and Windows AMD64.

--
Tcl Core Team and Maintainers
Don Porter, Tcl Core Release Manager

2007-09-05

Tcl/Tk 8.5 βリリース

うやく Tcl/Tk 8.5 のβリリースが始まるようです。次のビットウォーク版の Windows 用 Tcl/Tk は、8.5b1 のリリース後に、Linux 上の MinGW クロスコンパイラで生成したバイナリをリリースしようと考えています。

Date: Mon, 03 Sep 2007 16:52:22 -0700
From: Jeff Hobbs
Organization: ActiveState
To: Tcl Core List
Subject: [TCLCORE] 8.5 beta approaching

The 8.5 has had an overlong product cycle, and a beta date has been set
to precede the upcoming conference. Beta indicates feature freeze time
for Tcl.

The stress test time frame will be the week of September 10th, with a
code freeze on the following weekend. Interim ActiveTcl builds will be
available for interesting testers, but source-level testing is also
strongly encouraged.

This message is short and sweet. So hopefully will be the beta cycle.

Jeff

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Tcl-Core mailing list
Tcl-Core@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tcl-core

2007-09-04

MinGW Cross Compiler Project (つづき)

SourceForge.net Logo
りあえず、今まで使っていたクロスコンパイラを整備して以下のパッケージをアップロードしました。

mingw-binutils-2.17.50-1.fc7.i386.rpm
mingw-gcc-core-3.4.5-1.fc7.i386.rpm
mingw-runtime-3.13-1.fc7.i386.rpm
mingw-w32api-3.10-1.fc7.i386.rpm

次の週末には、C だけでなく、Ada を除く他のコンパイラを加えた GCC をアップデートしようと考えています。リリースを予定しているパッケージは以下の通りです。

mingw-gcc-core-3.4.5-2.fc7.i386.rpm
mingw-gcc-g++-3.4.5-2.fc7.i386.rpm
mingw-gcc-g77-3.4.5-2.fc7.i386.rpm
mingw-gcc-objc-3.4.5-2.fc7.i386.rpm
mingw-gcc-java-3.4.5-2.fc7.i386.rpm

RPM をビルドするための spec ファイルは概ね完成していますが、コンパイラの動作確認をある程度行いたいので、リリースは、もしかするともう少し先になるかもしれません。