トップ 最新 追記

Masa's blog

検索キーワード:

2011年10月05日 zaurus linux-kexecboot-2.6.39.3 [長年日記]

_ zaurus linux-kexecboot-2.6.39.3

zaurus linux-kexecboot-2.6.39.3からブートカーネルを複数登録できる。

これでカーネルの実験的ビルドがしやすくなる。

私の/boot/boot.cfg

# Show this label in kexecboot menu.
#==================================================
# Specify full path to the kernel.
KERNEL=/boot/zImage
# Label shown in menu
LABEL=ARMedslack 13.1(default)
# Append this tags to the kernel cmdline.
APPEND=console=ttyS0,115200n8 console=tty1 noinitrd psplash=false debug
# Specify full path for a custom distro-icon for the menu-item.
# If not set, use device-icons as default (NAND, SD, CF, ...).
#ICON=/boot/icon.xpm
# Priority of item in kexecboot menu.
# Items with highest priority will be shown at top of menu.
# Default: 0 (lowest, ordered by device ordering)
#PRIORITY=10
#
#==================================================
KERNEL=/boot/zImage-2.6.36.4.old
LABEL=ARMedslack 13.1(old)
APPEND=console=ttyS0,115200n8 console=tty1 noinitrd psplash=false debug
#ICON=/boot/icon.xpm
#PRIORITY=10
#
#==================================================
KERNEL=/boot/zImage-2.6.36.4.ORG
LABEL=ARMedslack 13.1(ORG)
APPEND=console=ttyS0,115200n8 console=tty1 noinitrd psplash=false debug
#ICON=/boot/icon.xpm
#PRIORITY=10
#
#==================================================
KERNEL=/boot/zImage-2.6.36.4.debug
LABEL=ARMedslack 13.1(debug)
APPEND=console=ttyS0,115200n8 console=tty1 noinitrd psplash=false debug
#ICON=/boot/icon.xpm
#PRIORITY=10
#
#==================================================
KERNEL=/boot/zImage-2.6.33.7
LABEL=ARMedslack 13.1(2.6.33.7)
APPEND=console=ttyS0,115200n8 console=tty1 noinitrd psplash=false debug
#ICON=/boot/icon.xpm
#PRIORITY=10
#
#==================================================
KERNEL=/boot/zImage-2.6.39.1
LABEL=ARMedslack 13.1(2.6.39.1)
APPEND=console=ttyS0,115200n8 console=tty1 noinitrd psplash=false debug
#ICON=/boot/icon.xpm
#PRIORITY=10
#

2011年10月08日 脆弱性スキャナのOpenVASをソースからインストールしてみた [長年日記]

_ 脆弱性スキャナのOpenVASをソースからインストールしてみた

Nessusがオープンソースで無くなって久しいですが、代わりにOpenVASをソースからインストール。

libmicrohttpd-0.9.15

httpサーバを実装するためのライブラリ。

openvas-libraries-4.0.5

OpenVASのライブラリ。

  • tar xvzf openvas-libraries-4.0.5.tar.gz
  • cd openvas-libraries-4.0.5
  • cmake . && make
  • make install && ldconfig

openvas-scanner-3.2.4

OpenVASのスキャナ本体。

  • tar xvzf openvas-scanner-3.2.4.tar.gz
  • cd openvas-scanner-3.2.4
  • cmake . && make
  • make install
  • openvas-mkcert (OpenVASがサーバとなってSSL通信を行う必要があるので、サーバ証明書を作成する)
  • http_proxy=http://ぷろきし:ぽーと/ openvas-nvt-sync --wget (定義ファイルの更新)
  • openvas-adduser (クライアントから操作するためのユーザ登録)
  • touch /usr/local/var/lib/openvas/users/上記で登録したユーザ名/isadmin (OpenVASの管理者として設定する)

openvas-manager-2.0.4

クライアントの要求を受けて、その要求をスキャナデーモンに仲介するデーモン。

  • tar xvzf openvas-manager-2.0.4.tar.gz
  • cd openvas-manager-2.0.4
  • cmake . && make
  • make install
  • openvas-mkcert-client -n om -i (managerがscannerに接続する際のユーザ(om)の登録とクライアント証明書を作成する)

openvas-administrator-1.1.1

管理するデーモン(?)

  • tar xvzf openvas-administrator-1.1.1.tar.gz
  • cd openvas-administrator-1.1.1
  • cmake . && make
  • make install

greenbone-security-assistant-2.0.1

Webブラウザをクライアントとして利用するためのデーモン。httpsサーバとして動作する(?)。

  • tar xvzf greenbone-security-assistant-2.0.1.tar.gz
  • cd greenbone-security-assistant-2.0.1
  • cmake . && make
  • make install

gsd-1.2.0

クライアント。以前のopenvas-client-3.0.1は、プロトコルが合わなくて利用できなかった。

  • tar xvzf gsd-1.2.0.tar.gz
  • cd gsd-1.2.0
  • cmake . && make
  • make install

起動

  • openvassd (スキャンデーモン openvas-scannerのバックグラウンド起動)
  • openvasad (アドミンデーモン openvas-administratorのバックグラウンド起動)
  • gsad (セキュリティアシスタントデーモン greenbone-security-assistantのバックグラウンド起動)
  • openvasmd --rebuild (データベースを初期化する)
  • openvasmd (マネージャデーモン openvas-managerのバックグラウンド起動)
  • gsd (クライアント gsd greenbone-security-desktopの起動)

データベースの更新

  • http_proxy=http://ぷろきし:ぽーと/ openvas-nvt-sync --wget (定義ファイルの更新)
  • openvasmd --update (openvas-nvt-syncした際にデータベースを更新する?)

2011年10月11日 zaurus special kernel mirror site [長年日記]

_ zaurus special kernel mirror site

本家のページが消失っぽいので、ミラーを記録しておく。

http://katastrophos.net/zaurus/mirrors/tetsu.homelinux.org/v18h/


2011年10月20日 ffmpeg, soxを使って動画音声の音声部分のピッチ(音程)を修正した [長年日記]

_ ffmpeg, soxを使って動画音声の音声部分のピッチ(音程)を修正した

minitubeでダウンロードしたドラマ(5つに分割されている)のうち、4つめの後半と5つめの音声ピッチ(音程)が妙に低くなっていて、登場人物のセリフが全てジャイアント馬場状態になっていた。

これをなんか修正して、普通に視聴できるようにしたいと思い、以下のように行った。

ffmpeg-0.8.5のインストール

$ tar xvjf ffmpeg-0.8.5.tar.bz2
$ cd ffmpeg-0.8.5
$ ./configure && make
# make install

sox-14.3.2のインストール

$ tar sox-14.3.2.tar.gz
$ cd sox-14.3.2
$ patch -p0 <sox-14.3.2.diff
*** src/ffmpeg.c.ORG    2011-10-18 18:16:18.889000037 +0900
--- src/ffmpeg.c        2011-10-18 18:17:59.688000036 +0900
***************
*** 91,97 ****

    if (!codec || avcodec_open(enc, codec) < 0)
      return -1;
!   if (enc->codec_type != CODEC_TYPE_AUDIO) {
      lsx_fail("ffmpeg CODEC %x is not an audio CODEC", enc->codec_type);
      return -1;
    }
--- 91,97 ----

    if (!codec || avcodec_open(enc, codec) < 0)
      return -1;
!   if (enc->codec_type != AVMEDIA_TYPE_AUDIO) {
      lsx_fail("ffmpeg CODEC %x is not an audio CODEC", enc->codec_type);
      return -1;
    }
***************
*** 182,188 ****
    /* Find audio stream (FIXME: allow different stream to be selected) */
    for (i = 0; (unsigned)i < ffmpeg->ctxt->nb_streams; i++) {
      AVCodecContext *enc = ffmpeg->ctxt->streams[i]->codec;
!     if (enc->codec_type == CODEC_TYPE_AUDIO && ffmpeg->audio_index < 0) {
        ffmpeg->audio_index = i;
        break;
      }
--- 182,188 ----
    /* Find audio stream (FIXME: allow different stream to be selected) */
    for (i = 0; (unsigned)i < ffmpeg->ctxt->nb_streams; i++) {
      AVCodecContext *enc = ffmpeg->ctxt->streams[i]->codec;
!     if (enc->codec_type == AVMEDIA_TYPE_AUDIO && ffmpeg->audio_index < 0) {
        ffmpeg->audio_index = i;
        break;
      }
***************
*** 273,279 ****

    c = st->codec;
    c->codec_id = codec_id;
!   c->codec_type = CODEC_TYPE_AUDIO;

    /* put sample parameters */
    c->bit_rate = 256000;  /* FIXME: allow specification */
--- 273,279 ----

    c = st->codec;
    c->codec_id = codec_id;
!   c->codec_type = AVMEDIA_TYPE_AUDIO;

    /* put sample parameters */
    c->bit_rate = 256000;  /* FIXME: allow specification */
***************
*** 423,429 ****
        av_init_packet(&pkt);
        pkt.size = avcodec_encode_audio(c, ffmpeg->audio_buf_aligned, AVCODEC_MAX_AUDIO_FRAME_SIZE, ffmpeg->samples);
        pkt.pts = av_rescale_q(c->coded_frame->pts, c->time_base, ffmpeg->audio_st->time_base);
!       pkt.flags |= PKT_FLAG_KEY;
        pkt.stream_index = ffmpeg->audio_st->index;
        pkt.data = ffmpeg->audio_buf_aligned;

--- 423,429 ----
        av_init_packet(&pkt);
        pkt.size = avcodec_encode_audio(c, ffmpeg->audio_buf_aligned, AVCODEC_MAX_AUDIO_FRAME_SIZE, ffmpeg->samples);
        pkt.pts = av_rescale_q(c->coded_frame->pts, c->time_base, ffmpeg->audio_st->time_base);
!       pkt.flags |= AV_PKT_FLAG_KEY;
        pkt.stream_index = ffmpeg->audio_st->index;
        pkt.data = ffmpeg->audio_buf_aligned;
$ ./configure && make
# make install

4つめ動画の修正

  • 動画部分のみ抽出
ffmpeg -i M4-4.mp4 -an -vcodec msmpeg4v2 -vb 800k M4-4.mp4.avi
  • 前半音声部分(368秒まで)のみ抽出
ffmpeg -i M4-4.mp4 -t 368 -vn -acodec mp2 -ab 224k M4-4.mp4.1.mp2
  • 後半音声部分(368秒以降)のみ抽出
ffmpeg -i M4-4.mp4 -ss 368 -vn -acodec mp2 -ab 224k M4-4.mp4.2.mp2
  • 後半音声部分のピッチを160セント上げる。このあたりは自己判断で...。(100セントは半音)
sox M4-4.mp4.2.mp2 M4-4.mp4.2.up160.mp2 pitch 160
  • 前半音声部分とピッチを上げた後半音声部分を結合
sox M4-4.mp4.1.mp2 M4-4.mp4.2.up160.mp2 M4-4.mp4.new.mp2
  • 動画部分と結合後音声部分をミックス
ffmpeg -i M4-4.mp4.avi -vcodec copy -i M4-4.mp4.new.mp2 -acodec copy M4-4.new.avi
  • ミックスした動画音声をx264で再エンコード(2-pass)
mencoder -oac faac -faacopts br=96 -ovc x264 -x264encopts pass=1:bitrate=396 -o /dev/null M4-4.new.avi
mencoder -oac faac -faacopts br=96 -ovc x264 -x264encopts pass=2:bitrate=396 -o M4-4.new.new.avi M4-4.new.avi

(同様に)5つめ動画の修正

ffmpeg -i M4-5.mp4 -an -vcodec msmpeg4v2 -vb 800k M4-5.mp4.avi
ffmpeg -i M4-5.mp4  -vn -acodec mp2 -ab 224k M4-5.mp4.mp2
sox M4-5.mp4.mp2 M4-5.mp4.up160.mp2 pitch 160
ffmpeg -i M4-5.mp4.avi -vcodec copy -i M4-5.mp4.up160.mp2 -acodec copy M4-5.new.avi
mencoder -oac faac -faacopts br=96 -ovc x264 -x264encopts pass=1:bitrate=396 -o /dev/null M4-5.new.avi
mencoder -oac faac -faacopts br=96 -ovc x264 -x264encopts pass=2:bitrate=396 -o M4-5.new.new.avi M4-5.new.avi

その後

  • M4-1.mp4, M4-2.mp4, M4-3.mp4を、それぞれ M4-1.avi, M4-2.avi, M4-3.avi(vcodec=x264, acodec=faac)に変換(by mencoder)
  • M4-1.avi, M4-2.avi, M4-3.avi, M4-4.new.new.avi, M4-5.new.new.avi を連結してM04.aviを作成(by mencoder)

2011年10月28日 Windows XP(以降?)で外字ファイルを外部から取り込むために... [長年日記]

_ WIN32APIのenableEUDC()を使ったプログラムを作った

私にしては非常に珍しく、Windows(cygwin)ネタ。

enableEUDC.c

OS(Windows)の外字使用を開始するコマンド。

#include <windows.h>
typedef BOOL(WINAPI * ENABLEEUDC) (BOOL);
int main()
{
    ENABLEEUDC lpfnEnableEUDC;
    HINSTANCE hDll;
    BOOL bRet;
    /* EnableEUDCのアドレスの取得 */
    hDll = LoadLibrary("GDI32.DLL");
    if (hDll == NULL)
        exit(1);
    lpfnEnableEUDC = (ENABLEEUDC) GetProcAddress(hDll, "EnableEUDC");
    if (lpfnEnableEUDC == NULL) {
        FreeLibrary(hDll);
        exit(1);
    }
    // 外字使用の開始
    bRet = lpfnEnableEUDC(TRUE);
    if (bRet == FALSE) {
        FreeLibrary(hDll);
        exit(1);
    }
    FreeLibrary(hDll);
    exit(0);
}

disableEUDC.c

OS(Windows)の外字使用を停止するコマンド。

#include <windows.h>
typedef BOOL(WINAPI * ENABLEEUDC) (BOOL);
int main()
{
    ENABLEEUDC lpfnEnableEUDC;
    HINSTANCE hDll;
    BOOL bRet;
    /* EnableEUDCのアドレスの取得 */
    hDll = LoadLibrary("GDI32.DLL");
    if (hDll == NULL)
        exit(1);
    lpfnEnableEUDC = (ENABLEEUDC) GetProcAddress(hDll, "EnableEUDC");
    if (lpfnEnableEUDC == NULL) {
        FreeLibrary(hDll);
        exit(1);
    }
    /* 外字使用の中止 */
    bRet = lpfnEnableEUDC(FALSE);
    if (bRet == FALSE) {
        FreeLibrary(hDll);
        exit(1);
    }
    FreeLibrary(hDll);
    exit(0);
}

Makefile

CFLAGS=-v -O -mno-cygwin -mwindows
##LDFLAGS=-lgdi32
LDFLAGS=
all:    enableEUDC.exe disableEUDC.exe
enableEUDC.exe: enableEUDC.c
        cc $(CFLAGS) $(LDFLAGS) -o enableEUDC.exe enableEUDC.c
disableEUDC.exe:        disableEUDC.c
        cc $(CFLAGS) $(LDFLAGS) -o disableEUDC.exe disableEUDC.c

使い方

コマンドプロンプトをadministrator権限で起動し、

> disableEUDC
> del C:\WINDOWS\FONTS\Eudc.TTE
> copy Eudc.TTE C:\WINDOWS\FONTS\Eudc.TTE
> enableEUDC

2011年10月30日 firefox-1.0.8 on ARMedslack (挫折) [長年日記]

_ firefox-1.0.8 on ARMedslack (挫折)

ARMedslack on zaurus(SL-C860)でブラウザとなるとw3mdilloあたりが快適に使える限界で、軽量と言われるaroramidoriでも、もはや重すぎて常用するには耐えがたい状況だ。

そこで、あえて古いfirefox-1.0.x系をgtk+-1.2.xと組み合わせてビルドし、ビットマップフォントベースで利用してみようと考えた。

gtk+-1.2.10関係のインストール

glib-1.2.10
  • tar xvzf glib-1.2.10.tar.gz
  • cd glib-1.2.10
  • patch -p0 <glib-1.2.10.diff
*** ./gstrfuncs.c.ORG   2011-10-21 20:03:01.000000000 +0900
--- ./gstrfuncs.c       2011-10-21 21:23:44.000000000 +0900
***************
*** 867,874 ****
                    /* beware of positional parameters
                     */
                  case '$':
!                   g_warning (G_GNUC_PRETTY_FUNCTION
!                              "(): unable to handle positional parameters (%%n$)");
                    len += 1024; /* try adding some safety padding */
                    break;

--- 867,874 ----
                    /* beware of positional parameters
                     */
                  case '$':
!                   g_warning (G_GNUC_PRETTY_FUNCTION);
!                   g_warning ("(): unable to handle positional parameters (%%n$)");
                    len += 1024; /* try adding some safety padding */
                    break;

***************
*** 1034,1041 ****
                    /*          n   .   dddddddddddddddddddddddd   E   +-  eeee */
                    conv_len += 1 + 1 + MAX (24, spec.precision) + 1 + 1 + 4;
                    if (spec.mod_extra_long)
!                     g_warning (G_GNUC_PRETTY_FUNCTION
!                                "(): unable to handle long double, collecting double only");
  #ifdef HAVE_LONG_DOUBLE
  #error need to implement special handling for long double
  #endif
--- 1034,1041 ----
                    /*          n   .   dddddddddddddddddddddddd   E   +-  eeee */
                    conv_len += 1 + 1 + MAX (24, spec.precision) + 1 + 1 + 4;
                    if (spec.mod_extra_long)
!                     g_warning (G_GNUC_PRETTY_FUNCTION);
!                     g_warning ("(): unable to handle long double, collecting double only");
  #ifdef HAVE_LONG_DOUBLE
  #error need to implement special handling for long double
  #endif
***************
*** 1077,1084 ****
                    conv_done = TRUE;
                    if (spec.mod_long)
                      {
!                       g_warning (G_GNUC_PRETTY_FUNCTION
!                                  "(): unable to handle wide char strings");
                        len += 1024; /* try adding some safety padding */
                      }
                    break;
--- 1077,1084 ----
                    conv_done = TRUE;
                    if (spec.mod_long)
                      {
!                       g_warning (G_GNUC_PRETTY_FUNCTION);
!                       g_warning ("(): unable to handle wide char strings");
                        len += 1024; /* try adding some safety padding */
                      }
                    break;
***************
*** 1108,1115 ****
                    conv_len += format - spec_start;
                    break;
                  default:
!                   g_warning (G_GNUC_PRETTY_FUNCTION
!                              "(): unable to handle `%c' while parsing format",
                               c);
                    break;
                  }
--- 1108,1115 ----
                    conv_len += format - spec_start;
                    break;
                  default:
!                   g_warning (G_GNUC_PRETTY_FUNCTION);
!                   g_warning ("(): unable to handle `%c' while parsing format",
                               c);
                    break;
                  }
  • ./configure --prefix=/usr/local/gtk1
  • make
  • make install
libIDL-0.6.8
  • tar xvzf libIDL-0.6.8.tar.gz
  • cd libIDL-0.6.8
  • ./configure --prefix=/usr/local/gtk1
  • make
  • make install
gtk+-1.2.10
  • tar xvzf gtk+-1.2.10.tar.gz
  • cd gtk+-1.2.10
  • ./configure --prefix=/usr/local/gtk1 --with-locale=ja_JP.eucJP
  • make
  • make install

firefox-1.0.8 ビルド

  • tar xvjf firefox-1.0.8-source.tar.bz2
  • cd mozilla
  • patch -p0 <firefox-1.0.8.diff
*** ./security/coreconf/rules.mk.ORG    2011-10-23 09:31:09.000000000 +0900
--- ./security/coreconf/rules.mk        2011-10-23 10:25:19.000000000 +0900
***************
*** 881,915 ****

  ifneq (,$(filter-out OpenVMS OS2 WIN%,$(OS_TARGET)))
  # Can't use sed because of its 4000-char line length limit, so resort to perl
! .DEFAULT:
!       @perl -e '                                                            \
            open(MD, "< $(DEPENDENCIES)");                                    \
            while (<MD>) {                                                    \
!               if (m@ \.*/*$< @) {                                           \
!                   $$found = 1;                                              \
!                   last;                                                     \
!               }                                                             \
            }                                                                 \
            if ($$found) {                                                    \
!               print "Removing stale dependency $< from $(DEPENDENCIES)\n";  \
!               seek(MD, 0, 0);                                               \
!               $$tmpname = "$(OBJDIR)/fix.md" . $$$$;                        \
!               open(TMD, "> " . $$tmpname);                                  \
!               while (<MD>) {                                                \
!                   s@ \.*/*$< @ @;                                           \
!                   if (!print TMD "$$_") {                                   \
!                       unlink(($$tmpname));                                  \
!                       exit(1);                                              \
!                   }                                                         \
!               }                                                             \
!               close(TMD);                                                   \
!               if (!rename($$tmpname, "$(DEPENDENCIES)")) {                  \
!                   unlink(($$tmpname));                                      \
!               }                                                             \
            } elsif ("$<" ne "$(DEPENDENCIES)") {                             \
!               print "$(MAKE): *** No rule to make target $<.  Stop.\n";     \
!               exit(1);                                                      \
!           }'
  endif

  #############################################################################
--- 881,917 ----

  ifneq (,$(filter-out OpenVMS OS2 WIN%,$(OS_TARGET)))
  # Can't use sed because of its 4000-char line length limit, so resort to perl
! PERL_DEPENDENCIES_PROGRAM =                                                   \
            open(MD, "< $(DEPENDENCIES)");                                    \
            while (<MD>) {                                                    \
!               if (m@ \.*/*$< @) {                                           \
!                   $$found = 1;                                              \
!                   last;                                                     \
!               }                                                             \
            }                                                                 \
            if ($$found) {                                                    \
!               print "Removing stale dependency $< from $(DEPENDENCIES)\n";  \
!               seek(MD, 0, 0);                                               \
!               $$tmpname = "$(OBJDIR)/fix.md" . $$$$;                        \
!               open(TMD, "> " . $$tmpname);                                  \
!               while (<MD>) {                                                \
!                   s@ \.*/*$< @ @;                                           \
!                   if (!print TMD "$$_") {                                   \
!                       unlink(($$tmpname));                                  \
!                       exit(1);                                              \
!                   }                                                         \
!               }                                                             \
!               close(TMD);                                                   \
!               if (!rename($$tmpname, "$(DEPENDENCIES)")) {                  \
!                   unlink(($$tmpname));                                      \
!               }                                                             \
            } elsif ("$<" ne "$(DEPENDENCIES)") {                             \
!               print "$(MAKE): *** No rule to make target $<.  Stop.\n";     \
!               exit(1);                                                      \
!           }
!
! .DEFAULT:
!           @perl -e '$(PERL_DEPENDENCIES_PROGRAM)'
  endif

  #############################################################################
*** ./xpcom/reflect/xptcall/src/md/unix/xptcstubs_arm.cpp.ORG   2011-10-22 09:53:50.000000000 +0900
--- ./xpcom/reflect/xptcall/src/md/unix/xptcstubs_arm.cpp       2011-10-22 09:54:47.000000000 +0900
***************
*** 45,51 ****
  #endif

  /* Specify explicitly a symbol for this function, don't try to guess the c++ mangled symbol.  */
! static nsresult PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint32* args) asm("_PrepareAndDispatch");

  static nsresult
  PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint32* args)
--- 45,51 ----
  #endif

  /* Specify explicitly a symbol for this function, don't try to guess the c++ mangled symbol.  */
! static nsresult PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint32* args) asm("_PrepareAndDispatch") __attribute__((used));

  static nsresult
  PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint32* args)
*** ./nsprpub/pr/src/misc/prdtoa.c.ORG  2011-10-24 19:13:16.000000000 +0900
--- ./nsprpub/pr/src/misc/prdtoa.c      2011-10-24 19:17:07.000000000 +0900
***************
*** 132,139 ****
   *    is not strictly legal and can cause trouble with aggressively
   *    optimizing compilers (e.g., gcc 2.95.1 under -O2).
   */
! #if defined(__arm) || defined(__arm__) || defined(__arm26__) \
!     || defined(__arm32__)
  #define IEEE_ARM
  #elif defined(IS_LITTLE_ENDIAN)
  #define IEEE_8087
--- 132,139 ----
   *    is not strictly legal and can cause trouble with aggressively
   *    optimizing compilers (e.g., gcc 2.95.1 under -O2).
   */
! #if (defined(__arm) || defined(__arm__) || defined(__arm26__) \
!     || defined(__arm32__)) && !defined(__ARM_EABI__) && !defined(__ARMEB__)
  #define IEEE_ARM
  #elif defined(IS_LITTLE_ENDIAN)
  #define IEEE_8087
*** ./nsprpub/pr/include/md/_linux.h.ORG        2011-10-24 19:17:40.000000000 +0900
--- ./nsprpub/pr/include/md/_linux.h    2011-10-24 19:22:55.000000000 +0900
***************
*** 285,291 ****
  #error "Linux/MIPS pre-glibc2 not supported yet"
  #endif /* defined(__GLIBC__) && __GLIBC__ >= 2 */

! #elif defined(__arm__)
  /* ARM/Linux */
  #if defined(__GLIBC__) && __GLIBC__ >= 2
  #define _MD_GET_SP(_t) (_t)->md.context[0].__jmpbuf[20]
--- 285,291 ----
  #error "Linux/MIPS pre-glibc2 not supported yet"
  #endif /* defined(__GLIBC__) && __GLIBC__ >= 2 */

! #elif defined(__arm__) && !defined(__ARM_EABI__)
  /* ARM/Linux */
  #if defined(__GLIBC__) && __GLIBC__ >= 2
  #define _MD_GET_SP(_t) (_t)->md.context[0].__jmpbuf[20]
***************
*** 295,300 ****
--- 295,312 ----
  #define _MD_SP_TYPE __ptr_t
  #else
  #error "ARM/Linux pre-glibc2 not supported yet"
+ #endif /* defined(__GLIBC__) && __GLIBC__ >= 2 */
+
+ #elif defined(__arm__) && defined(__ARM_EABI__)
+ /* ARM/Linux */
+ #if defined(__GLIBC__) && __GLIBC__ >= 2
+ #define _MD_GET_SP(_t) (_t)->md.context[0].__jmpbuf[8]
+ #define _MD_SET_FP(_t, val) ((_t)->md.context[0].__jmpbuf[7] = (val))
+ #define _MD_GET_SP_PTR(_t) &(_MD_GET_SP(_t))
+ #define _MD_GET_FP_PTR(_t) (&(_t)->md.context[0].__jmpbuf[7])
+ #define _MD_SP_TYPE __ptr_t
+ #else
+ #error "ARM/Linux pre-glibc2 not supported yet"
  #endif /* defined(__GLIBC__) && __GLIBC__ >= 2 */

  #else
*** ./toolkit/xre/nsAppRunner.cpp.ORG   2011-10-25 12:01:00.000000000 +0900
--- ./toolkit/xre/nsAppRunner.cpp       2011-10-25 12:01:16.000000000 +0900
***************
*** 1162,1168 ****
      return NS_ERROR_FAILURE;

    char *exePath = info.name;
! #elif
  #error Oops, you need platform-specific code here
  #endif

--- 1162,1168 ----
      return NS_ERROR_FAILURE;

    char *exePath = info.name;
! #else
  #error Oops, you need platform-specific code here
  #endif

*** toolkit/xre/nsXREDirProvider.cpp.ORG        2011-10-25 12:37:20.000000000 +0900
--- toolkit/xre/nsXREDirProvider.cpp    2011-10-25 12:37:56.000000000 +0900
***************
*** 181,187 ****

    *p = 0;
    return NS_NewNativeLocalFile(nsDependentCString(info.name), PR_TRUE, getter_AddRefs(mAppDir));
! #elif
  #error Oops, you need platform-specific code here
  #endif
  }
--- 181,187 ----

    *p = 0;
    return NS_NewNativeLocalFile(nsDependentCString(info.name), PR_TRUE, getter_AddRefs(mAppDir));
! #else
  #error Oops, you need platform-specific code here
  #endif
  }
  • vi .mozconfig
. $topsrcdir/browser/config/mozconfig
##ac_add_options --disable-debug
ac_add_options --enable-debug
ac_add_options --enable-optimize
ac_add_options --enable-default-toolkit=gtk
ac_add_options --disable-xft
ac_add_options --disable-freetype2

ac_add_options --with-gtk-prefix=/usr/local/gtk1
ac_add_options --with-glib-prefix=/usr/local/gtk1
ac_add_options --with-libIDL-prefix=/usr/local/gtk1

#ac_add_options --disable-freetypetest
#ac_add_options --disable-gtktest
#ac_add_options --disable-mailnews
#ac_add_options --disable-ldap
#ac_add_options --disable-postscript
#ac_add_options --disable-xprint
#ac_add_options --disable-gnomevfs
#ac_add_options --disable-jsd
#ac_add_options --disable-plugins
#ac_add_options --disable-oji
#ac_add_options --disable-view-source
#ac_add_options --disable-accessibility
#ac_add_options --disable-xpfe-components
##MUST_DEL_ac_add_options --disable-xpinstall
#ac_add_options --disable-jsloader
#ac_add_options --disable-composer
#ac_add_options --disable-mathml
#ac_add_options --disable-installer
#ac_add_options --disable-activex
#ac_add_options --disable-activex-scripting
#ac_add_options --disable-tests
#ac_add_options --disable-logging
#ac_add_options --disable-pedantic
#ac_add_options --disable-auto-deps
#ac_add_options --disable-md
#ac_add_options --disable-static-component-loader
#ac_add_options --disable-libIDLtest
#ac_add_options --disable-glibtest
##MUST_DEL_ac_add_options --disable-xul
#ac_add_options --disable-profilesharing
#ac_add_options --disable-profilelocking
#ac_add_options --disable-necko-disk-cache
  • make -f client.mk build
  • cd xpinstall/packager
  • make MOZILLA_BIN=../../dist/bin/firefox

結果

惨敗。

なんのメッセージも吐かずに、exit code 1で終了。