[[Linux/evlog]]

----
contents
#contents
----

#br
* evlog make [#l2d63160]

 ここでは evlog をソースから make します。

 正直よく make 通ったなという感じなので、こんなことして作った物を実際運用しようとかは止めた方がいいでしょう。 ;-P~
 使用する場合は rpm 入れられる環境でのみ使用するか、素直に諦めることを強くお勧めします。


#br
** make する [#wb8a2a93]

#br
*** そのまま configure, make 試行 [#c08242bf]
 $ ./configure
 (snip)
 evlog configuration:
   Version                                = 1.6.1
   Kernel header directory                = /usr/include/linux
   evlog configuration directory          = /etc/evlog.d
   evlog plugins directory                = /opt/evlog/plugins
   System Executables                     = /sbin
   Man pages                              = /usr/man
   Libraries                              = /usr/lib
   Header files                           = /usr/include
   Data files                             = /usr/share
   State information                      = /var/evlog
   System configuration                   = /etc
   Init (rc) scripts                      = /etc/init.d
   Share directory                        = /usr/share/evlog
 
 $ make

#br
*** ぶっちゃけ無理 [#v7d48c3c]

- 試験した環境が gcc 4.3.2 の Debian5.0.6 なので、 make するのは果てしなく険しい道のりっぽい。
-- [evlog-dev] can not compile evlog on gcc 4 // ttp://osdir.com/ml/linux.kernel.event-logging/2007-02/msg00000.html

#br
*** 強引にやってみる [#f00b4772]

 以下、ものすごく強引に make を通すためだけにソースをいじりまくります。~
 起動するのか試したところ、何と evlogd 起動しました(笑)

- %%%replace __FUNCTION__ by " "%%% がどこを指すのか悩んだけど、ここっぽい?
 $ diff -bup ./user/include/evlog.h.in.org ./user/include/evlog.h.in
 --- ./user/include/evlog.h.in.org	2010-10-18 21:44:07.000000000 +0900
 +++ ./user/include/evlog.h.in	2010-10-18 21:44:39.000000000 +0900
 @@ -191,7 +191,7 @@ struct evlog_position {
     char file[128];
  };
  
 -#define _EVLOG_POS { __LINE__, __FUNCTION__, __FILE__ }
 +#define _EVLOG_POS { __LINE__, " ", __FILE__ }
  
  struct evlog_info {
     char format[128+64];

- PTHREAD_THREADS_MAX がないからって _POSIX_THREAD_THREADS_MAX で置き換えるか?~
test set だし、まぁいいか...
 $ diff -bup ./user/lib/test/threadTest.c.org ./user/lib/test/threadTest.c
 --- ./user/lib/test/threadTest.c.org	2010-10-18 19:51:11.000000000 +0900
 +++ ./user/lib/test/threadTest.c	2010-10-18 19:51:56.000000000 +0900
 @@ -33,7 +33,7 @@
   * 
   */
  
 -#define MAX_THREADS (PTHREAD_THREADS_MAX-2)
 +#define MAX_THREADS (_POSIX_THREAD_THREADS_MAX-2)
  
  struct workerStats {
  	pthread_t	tid;

- _evlTmplArchTypeInfo いじり
 $ diff -bup ./user/include/evl_template.h.org ./user/include/evl_template.h
 --- ./user/include/evl_template.h.org	2004-04-30 09:22:59.000000000 +0900
 +++ ./user/include/evl_template.h	2010-10-18 19:45:28.000000000 +0900
 @@ -469,7 +469,7 @@ extern int evlatt_getstructfromarray(con
  extern void _evlTmplSemanticError(const char *fmt, ...);
  extern tmpl_type_info_t _evlTmplTypeInfo[];
  
 -extern tmpl_arch_type_info_t _evlTmplArchTypeInfo[][];
 +extern tmpl_arch_type_info_t _evlTmplArchTypeInfo[][24];
  
  extern void _evlTmplDprintf(const char *fmt, ...);
  extern int _evlEndsWith(const char *s, const char *suffix);
 $ diff -bup ./user/lib/test/threadTest2.c.org ./user/lib/test/threadTest2.c
 --- ./user/lib/test/threadTest2.c.org	2010-10-18 19:51:20.000000000 +0900
 +++ ./user/lib/test/threadTest2.c	2010-10-18 19:52:08.000000000 +0900
 @@ -24,7 +24,7 @@
   * (which in turn calls posix_log_vprintf).
   */
  
 -#define MAX_THREADS (PTHREAD_THREADS_MAX-2)
 +#define MAX_THREADS (_POSIX_THREAD_THREADS_MAX-2)
  
  struct workerStats {
  	pthread_t	tid;
- 他にもいろいろ出てくる
 $ diff -bup ./user/lib/template/convert.c.org ./user/lib/template/convert.c
 --- ./user/lib/template/convert.c.org	2010-10-18 19:54:02.000000000 +0900
 +++ ./user/lib/template/convert.c	2010-10-18 19:55:07.000000000 +0900
 @@ -245,6 +245,7 @@ conv_swap_long(int log_arch, tmpl_base_t
  			}
  			break;
      default:
 +	;
  	}
  }
  
 $ diff -bup ./user/lib/util/format.c.org ./user/lib/util/format.c
 --- ./user/lib/util/format.c.org	2010-10-18 19:57:11.000000000 +0900
 +++ ./user/lib/util/format.c	2010-10-18 19:57:42.000000000 +0900
 @@ -287,6 +287,7 @@ makeAttrSegment(char *attrSpec, int allo
  		seg->u2.fs_attribute = NULL;
  		break;
    default:
 +	;
  	}
  	seg->fs_userfmt = attrFmt;
  	if (attrFmt
 @@ -476,6 +477,7 @@ _evlAllocateFmtBuf(const evl_list_t *hea
  			size += _evlGetMaxDumpLen();
  			break;
      default:
 +	;
  		}
  		p = p->li_next;
  	} while (p != head);
 @@ -668,6 +670,7 @@ adjustUintType(const char *mod, int prom
  	case TY_LONG:		return TY_ULONG;
  	case TY_LONGLONG:	return TY_ULONGLONG;
    default:
 +	;
  	}
  	return ty;
  }

- asm/atomic.h を強引に読ませるために configure し直し
 $ ./configure CPPFLAGS=-I/usr/src/linux-headers-2.6.26-2-amd64/include

- 強引に typedef する
 $ diff -bup ./user/cmd/evlogd/ksym_mod.c.org ./user/cmd/evlogd/ksym_mod.c
 --- ./user/cmd/evlogd/ksym_mod.c.org	2010-10-18 22:04:28.000000000 +0900
 +++ ./user/cmd/evlogd/ksym_mod.c	2010-10-18 22:04:46.000000000 +0900
 @@ -80,6 +80,7 @@
   *	Changed llseek() to lseek64() in order to skip a libc warning.
   */
  
 +typedef unsigned char u8;
  
  /* Includes. */
  #include <stdio.h>

#br
*** make install [#a5381058]

 make install は特に何もなく実行可能。

 # make install

 デフォルトのまま configure すると、インストール先は /usr/local/ 配下になるので、それが嫌な人はあらかじめ suffix を変更するよう configure しておきましょう。


#br
* evlog-telco make [#babe09be]

 evlog-telco を make するには、 evlog を make install まで済ませてあることが必要です。

#br
** make [#v6eb649c]

 何だか evlforward の Makefile で BUILDROOT が指定してあり、とんでもないところへ install してしまうので...

- /var/tmp/evlog-telco-buildroot から / に変更したり、 /etc/rd.d/init.d/ でなく /etc/init.d/ に変更したり。
 $ diff -bup evlforward/Makefile.org evlforward/Makefile
 --- evlforward/Makefile.org	2010-10-20 22:38:36.000000000 +0900
 +++ evlforward/Makefile	2010-10-20 22:48:16.000000000 +0900
 @@ -1,5 +1,5 @@
  # evlforward (POSIX Event Logging Telco Extensions)
 -BUILDROOT=/var/tmp/evlog-telco-buildroot
 +BUILDROOT=/
  CC= gcc
  FSSTND = -DFSSTND
  SYSLOGD_FLAGS= -DSYSLOG_INET -DSYSLOG_UNIXAF -DNO_SCCS ${FSSTND}
 @@ -31,13 +31,13 @@ evlforward.1.gz: evlforward.1
  
  install:
  	test -e  $(BUILDROOT) || mkdir -p $(BUILDROOT)
 -	test -e  $(BUILDROOT)/etc/rc.d/init.d || mkdir -p $(BUILDROOT)/etc/rc.d/init.d 
 +	test -e  $(BUILDROOT)/etc/init.d || mkdir -p $(BUILDROOT)/etc/init.d 
  	test -e $(BUILDROOT)/usr/man/man1  || mkdir -p $(BUILDROOT)/usr/man/man1 
  	test -e $(BUILDROOT)/sbin  || mkdir -p $(BUILDROOT)/sbin 
 -	chmod 755 $(BUILDROOT)/etc/rc.d/init.d 
 +	# chmod 755 $(BUILDROOT)/etc/rc.d/init.d 
  	cp ./evlforward $(BUILDROOT)/sbin
  	# chmod 744 $(BUILDROOT)/sbin/evlforward
 -	cp ./evlforward.init $(BUILDROOT)/etc/rc.d/init.d/evlforward
 +	cp ./evlforward.init $(BUILDROOT)/etc/init.d/evlforward
  	cp ./evlforward.1.gz $(BUILDROOT)/usr/man/man1/.
  	
  clean:

- その後普通に make して
 $ make

- evlforward だけ入れればいいや、なので
 # cd evlforward
 # make install

#br
* evlog 起動設定 [#laa17346]

- chkconfig に従って、 init script を有効にする
 # update-rc.d evlaction defaults 90 40
 # update-rc.d evlnotify defaults 80 50
 # update-rc.d evlog defaults 9 90
 # update-rc.d evlforward defaults 91 39
-- 今回の OS は Debian なので、 update-rc.d を使います。~
defaults 指定なので、 runlevel 2,3,4,5 は start 、 runlevel 0,1,6 は stop になります。
-- evlforward の script には chkconfig 指定がないので、 evlactiond 起動後に転送開始するよう、順位を調整しました。

#br
* 更新履歴 [#eab18feb]
- 2010/12/12 evlog 起動設定を追加
- 2010/10/20 evlog を make install, evlog-telco も make install した
- 2010/10/18 強引に make までやった
- 2010/10/17 configure だけ

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS