4.0.2のWindows版をVC2012日本語版でビルド

classic Classic list List threaded Threaded
5 messages Options
Isamu Mogi Isamu Mogi
Reply | Threaded
Open this post in threaded view
|

4.0.2のWindows版をVC2012日本語版でビルド

はじめまして。茂木といいます。

すみません、LibreOffice4.0.2(libreoffice-4.0.2.2タグ)を日本語版VC++ 2010 Expressで
コンパイルに成功した方いらっしゃいます?英語版では成功するのですが、日本語版だと
下記エラーでコケます。おそらく、ソースコード内にutf-8でαとか∞とかが書いてあるのが
原因だと思います。すみませんが、何か上手い回避方法があれば共有お願いしたいです。

■ エラー内容

[build MOD] cui
[build MOD] writerfilter
[build CUT] writerfilter_rtftok
[build MOD] dbaccess
C:/libo/sw/qa/extras/rtfexport/rtfexport.cxx(333) : error C2001: 定数が 2
行目に続いています。
C:/libo/sw/qa/extras/rtfexport/rtfexport.cxx(334) : error C2064: 1
引数を取り込む関数には評価されません。
C:/libo/sw/qa/extras/rtfexport/rtfexport.cxx(334) : error C2143: 構文エラー
: ')' が ';' の前にありません。
[build CUT] sd_uimpress
make[2]: *** [C:/libo/workdir/wntmsci13/CxxObject/sw/qa/extras/rtfexport/rtfexport.o]
Error 2

■ ビルド環境

Windows 8 Pro 日本語版 (x64)
$ uname -a
CYGWIN_NT-6.2-WOW64 ホスト名 1.7.17(0.262/5/3) 2012-10-19 14:39 i686 Cygwin
$ cat autogen.lastrun
--with-nss-build-tools=/cygdrive/c/opt/mozilla-build
--with-ant-home=/path/to/apache-ant-1.9.0
--with-junit=/path/to/junit-4.10.jar
--disable-activex
--disable-atl
--disable-odk
--enable-pch
--enable-ccache
--enable-dbgutil
--without-help
--without-myspell-dicts
--enable-debug

また、ビルド前に下記のパッチを当てています。当てない場合はfilter-showIncludes.awkがエラーを吐きます。

diff --git a/solenv/gbuild/platform/filter-showIncludes.awk
b/solenv/gbuild/platform/filter-showIncludes.awk
index 9d94f3b..c54e4fd 100755
--- a/solenv/gbuild/platform/filter-showIncludes.awk
+++ b/solenv/gbuild/platform/filter-showIncludes.awk
@@ -31,8 +31,6 @@ BEGIN {
     if (!showincludes_prefix) {
         showincludes_prefix = "Note: including file:"
     }
-    regex = "^ *" showincludes_prefix " *"
-    pattern = "/" regex "/"

     # to match especially drive letters in whitelist case insensitive
     IGNORECASE = 1
@@ -42,8 +40,10 @@ BEGIN {
     }

     {
-    if ($0 ~ regex) {
-    sub(regex, "")
+    found = index($0, showincludes_prefix)
+    if (found) {
+        $0 = substr($0, found, length(showincludes_prefix))
+        gsub(/^ +/, "")
         gsub(/\\/, "/")
         gsub(/ /, "\\ ")
         if ($0 ~ whitelist) { # filter out system headers


--
茂木 勇

--
Unsubscribe instructions: E-mail to [hidden email]
Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette
List archive: http://listarchives.libreoffice.org/ja/discuss/
All messages sent to this list will be publicly archived and cannot be deleted

foral foral
Reply | Threaded
Open this post in threaded view
|

Re: 4.0.2のWindows版をVC2012日本語版でビルド

瀧澤です。

win8とVC2012の組み合わせを使ったことないのであれですが、
システムロケールを変えてみてはいかがでしょうか?

VC2005では、ロケール設定を英語環境にしないと
文字コード絡みのエラーがよく出ていました。

http://windows.microsoft.com/ja-jp/windows-vista/change-the-system-locale

(13/04/07 1:13), Isamu Mogi wrote:

> はじめまして。茂木といいます。
>
> すみません、LibreOffice4.0.2(libreoffice-4.0.2.2タグ)を日本語版VC++ 2010 Expressで
> コンパイルに成功した方いらっしゃいます?英語版では成功するのですが、日本語版だと
> 下記エラーでコケます。おそらく、ソースコード内にutf-8でαとか∞とかが書いてあるのが
> 原因だと思います。すみませんが、何か上手い回避方法があれば共有お願いしたいです。
>
> ■ エラー内容
>
> [build MOD] cui
> [build MOD] writerfilter
> [build CUT] writerfilter_rtftok
> [build MOD] dbaccess
> C:/libo/sw/qa/extras/rtfexport/rtfexport.cxx(333) : error C2001: 定数が 2
> 行目に続いています。
> C:/libo/sw/qa/extras/rtfexport/rtfexport.cxx(334) : error C2064: 1
> 引数を取り込む関数には評価されません。
> C:/libo/sw/qa/extras/rtfexport/rtfexport.cxx(334) : error C2143: 構文エラー
> : ')' が ';' の前にありません。
> [build CUT] sd_uimpress
> make[2]: *** [C:/libo/workdir/wntmsci13/CxxObject/sw/qa/extras/rtfexport/rtfexport.o]
> Error 2
>
> ■ ビルド環境
>
> Windows 8 Pro 日本語版 (x64)
> $ uname -a
> CYGWIN_NT-6.2-WOW64 ホスト名 1.7.17(0.262/5/3) 2012-10-19 14:39 i686 Cygwin
> $ cat autogen.lastrun
> --with-nss-build-tools=/cygdrive/c/opt/mozilla-build
> --with-ant-home=/path/to/apache-ant-1.9.0
> --with-junit=/path/to/junit-4.10.jar
> --disable-activex
> --disable-atl
> --disable-odk
> --enable-pch
> --enable-ccache
> --enable-dbgutil
> --without-help
> --without-myspell-dicts
> --enable-debug
>
> また、ビルド前に下記のパッチを当てています。当てない場合はfilter-showIncludes.awkがエラーを吐きます。
>
> diff --git a/solenv/gbuild/platform/filter-showIncludes.awk
> b/solenv/gbuild/platform/filter-showIncludes.awk
> index 9d94f3b..c54e4fd 100755
> --- a/solenv/gbuild/platform/filter-showIncludes.awk
> +++ b/solenv/gbuild/platform/filter-showIncludes.awk
> @@ -31,8 +31,6 @@ BEGIN {
>      if (!showincludes_prefix) {
>          showincludes_prefix = "Note: including file:"
>      }
> -    regex = "^ *" showincludes_prefix " *"
> -    pattern = "/" regex "/"
>
>      # to match especially drive letters in whitelist case insensitive
>      IGNORECASE = 1
> @@ -42,8 +40,10 @@ BEGIN {
>      }
>
>      {
> -    if ($0 ~ regex) {
> -    sub(regex, "")
> +    found = index($0, showincludes_prefix)
> +    if (found) {
> +        $0 = substr($0, found, length(showincludes_prefix))
> +        gsub(/^ +/, "")
>          gsub(/\\/, "/")
>          gsub(/ /, "\\ ")
>          if ($0 ~ whitelist) { # filter out system headers
>
>
> --
> 茂木 勇
>


--
Unsubscribe instructions: E-mail to [hidden email]
Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette
List archive: http://listarchives.libreoffice.org/ja/discuss/
All messages sent to this list will be publicly archived and cannot be deleted

Isamu Mogi Isamu Mogi
Reply | Threaded
Open this post in threaded view
|

Re: 4.0.2のWindows版をVC2012日本語版でビルド

茂木です。

情報ありがとうございます。

> win8とVC2012の組み合わせを使ったことないのであれですが、
> システムロケールを変えてみてはいかがでしょうか?

この方法は、ntemacsやrubyなどの利用に支障が出るようなので難しいです。

> VC2005では、ロケール設定を英語環境にしないと
> 文字コード絡みのエラーがよく出ていました。

これをヒントに調べたところ、VC2005の時代のバグ報告を発見しました。その当
時はascii以外の文字を16進のエスケープ文字で書き換えて修正されたみたいな
ので、awkの修正を出すついでに同じ修正をしてgerritに投げてみます。

https://issues.apache.org/ooo/show_bug.cgi?id=76970
https://issues.apache.org/ooo/show_bug.cgi?id=79572

(2013/04/07 9:20), Makoto Takizawa wrote:

> 瀧澤です。
>
>
>
> http://windows.microsoft.com/ja-jp/windows-vista/change-the-system-locale
>
> (13/04/07 1:13), Isamu Mogi wrote:
>> はじめまして。茂木といいます。
>>
>> すみません、LibreOffice4.0.2(libreoffice-4.0.2.2タグ)を日本語版VC++ 2010 Expressで
>> コンパイルに成功した方いらっしゃいます?英語版では成功するのですが、日本語版だと
>> 下記エラーでコケます。おそらく、ソースコード内にutf-8でαとか∞とかが書いてあるのが
>> 原因だと思います。すみませんが、何か上手い回避方法があれば共有お願いしたいです。
>>
>> ■ エラー内容
>>
>> [build MOD] cui
>> [build MOD] writerfilter
>> [build CUT] writerfilter_rtftok
>> [build MOD] dbaccess
>> C:/libo/sw/qa/extras/rtfexport/rtfexport.cxx(333) : error C2001: 定数が 2
>> 行目に続いています。
>> C:/libo/sw/qa/extras/rtfexport/rtfexport.cxx(334) : error C2064: 1
>> 引数を取り込む関数には評価されません。
>> C:/libo/sw/qa/extras/rtfexport/rtfexport.cxx(334) : error C2143: 構文エラー
>> : ')' が ';' の前にありません。
>> [build CUT] sd_uimpress
>> make[2]: *** [C:/libo/workdir/wntmsci13/CxxObject/sw/qa/extras/rtfexport/rtfexport.o]
>> Error 2
>>
>> ■ ビルド環境
>>
>> Windows 8 Pro 日本語版 (x64)
>> $ uname -a
>> CYGWIN_NT-6.2-WOW64 ホスト名 1.7.17(0.262/5/3) 2012-10-19 14:39 i686 Cygwin
>> $ cat autogen.lastrun
>> --with-nss-build-tools=/cygdrive/c/opt/mozilla-build
>> --with-ant-home=/path/to/apache-ant-1.9.0
>> --with-junit=/path/to/junit-4.10.jar
>> --disable-activex
>> --disable-atl
>> --disable-odk
>> --enable-pch
>> --enable-ccache
>> --enable-dbgutil
>> --without-help
>> --without-myspell-dicts
>> --enable-debug
>>
>> また、ビルド前に下記のパッチを当てています。当てない場合はfilter-showIncludes.awkがエラーを吐きます。
>>
>> diff --git a/solenv/gbuild/platform/filter-showIncludes.awk
>> b/solenv/gbuild/platform/filter-showIncludes.awk
>> index 9d94f3b..c54e4fd 100755
>> --- a/solenv/gbuild/platform/filter-showIncludes.awk
>> +++ b/solenv/gbuild/platform/filter-showIncludes.awk
>> @@ -31,8 +31,6 @@ BEGIN {
>>       if (!showincludes_prefix) {
>>           showincludes_prefix = "Note: including file:"
>>       }
>> -    regex = "^ *" showincludes_prefix " *"
>> -    pattern = "/" regex "/"
>>
>>       # to match especially drive letters in whitelist case insensitive
>>       IGNORECASE = 1
>> @@ -42,8 +40,10 @@ BEGIN {
>>       }
>>
>>       {
>> -    if ($0 ~ regex) {
>> -    sub(regex, "")
>> +    found = index($0, showincludes_prefix)
>> +    if (found) {
>> +        $0 = substr($0, found, length(showincludes_prefix))
>> +        gsub(/^ +/, "")
>>           gsub(/\\/, "/")
>>           gsub(/ /, "\\ ")
>>           if ($0 ~ whitelist) { # filter out system headers
>>
>>
>> --
>> 茂木 勇
>>
>
>

--
茂木 勇


--
Unsubscribe instructions: E-mail to [hidden email]
Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette
List archive: http://listarchives.libreoffice.org/ja/discuss/
All messages sent to this list will be publicly archived and cannot be deleted

Tomofumi Yagi Tomofumi Yagi
Reply | Threaded
Open this post in threaded view
|

Re: 4.0.2のWindows版をVC2012日本語版でビルド

茂木 様、瀧澤 様。

八木 です。

私の環境では、エラーの原因になっているファイルの文字コードを「UTF-8」
に、且つ「BOMあり」に変換することで、
システムロケールが日本語(日本)の状態でビルド出来ています。

Master しか試していませんが、4.0 ブランチ等も似た状況だと思われます。

en-US の場合(--with-lang=ja 等を指定しない場合)は、sw/qa 配下の数ファ
イルと、もしかしたら vcl/win/source/window/keynames.cxx を変換するだけだ
と思います。

Visual Studio 2010/2012 日本語版を使用して試しました。
どちらも Express ではないのですが、ご参考まで。


--
Unsubscribe instructions: E-mail to [hidden email]
Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette
List archive: http://listarchives.libreoffice.org/ja/discuss/
All messages sent to this list will be publicly archived and cannot be deleted

Isamu Mogi Isamu Mogi
Reply | Threaded
Open this post in threaded view
|

Re: 4.0.2のWindows版をVC2012日本語版でビルド

茂木です

> 私の環境では、エラーの原因になっているファイルの文字コードを「UTF-8」
> に、且つ「BOMあり」に変換することで、
> システムロケールが日本語(日本)の状態でビルド出来ています。

gccもいつのまにかbomありutf-8に対応してるみたいですし、そっちのほうが良
いかもしれないですね。やってみます。

(2013/04/07 20:20), yagi wrote:

> 茂木 様、瀧澤 様。
>
> 八木 です。
>
> 私の環境では、エラーの原因になっているファイルの文字コードを「UTF-8」
> に、且つ「BOMあり」に変換することで、
> システムロケールが日本語(日本)の状態でビルド出来ています。
>
> Master しか試していませんが、4.0 ブランチ等も似た状況だと思われます。
>
> en-US の場合(--with-lang=ja 等を指定しない場合)は、sw/qa 配下の数ファ
> イルと、もしかしたら vcl/win/source/window/keynames.cxx を変換するだけだ
> と思います。
>
> Visual Studio 2010/2012 日本語版を使用して試しました。
> どちらも Express ではないのですが、ご参考まで。
>
--
茂木 勇


--
Unsubscribe instructions: E-mail to [hidden email]
Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette
List archive: http://listarchives.libreoffice.org/ja/discuss/
All messages sent to this list will be publicly archived and cannot be deleted