From: Nobuyoshi Nakada Date: 2007-03-14T19:04:26+09:00 Subject: [ruby-dev:30579] Re: release code and revision number なかだです。 At Wed, 14 Mar 2007 15:24:24 +0900, Kazuhiro NISHIYAMA wrote in [ruby-dev:30577]: > > ちなみに、svkでリモートの情報を取るにはどうすればいいんでしょうか。 > > 手元で試した範囲だと、 > svk mirrorしているところからsvk coしていればsvk infoに > Mirrored From: ミラー元レポジトリのURI, Rev. nnn > のように出てくるようです。 > svk cpしてローカルブランチを作ってsvk coしていると > Copied From: /mirror/trunk, Rev. 1587 > Merged From: /mirror/trunk, Rev. 1589 > のように出てくるだけで、さらにsvk info //mirrorなどで > 調べないとMirrored Fromの情報は出てこないようです。 Merged Fromがそのローカルブランチ上でのrevisionと考えていいんでしょうか。 それともMirrored Fromのrevisionはまた別? > > 素のsvn infoだとメッセージが国際化されてしまっていて、結果を処理しよ > > うとすると厄介なので--xmlをつけたのですが、これだとdateがUTCになって > > しまうので、いずれにせよ修正します。 > > Debian sargeのsvn 1.1.4だとsvn infoに--xmlがないです。 svkでも対応していないし、比較的新しいオプションなんですかね。 とりあえず--xmlは使わないようにしてみました。svkについてはまだ保留。 Index: Makefile.in =================================================================== --- Makefile.in (revision 12066) +++ Makefile.in (working copy) @@ -80,4 +80,6 @@ SETUP = EXTSTATIC = @EXTSTATIC@ +RUBYBUILDTOOLS = $(srcdir)/tool/ + RM = rm -f NM = @NM@ @@ -185,2 +187,5 @@ distclean-local:: ext/extinit.$(OBJEXT): ext/extinit.c $(SETUP) $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) -o$@ -c ext/extinit.c + +revision-up: + @$(RUBYBUILDTOOLS)ifchange $(srcdir)/revision.h $(srcdir)/new_rev.h Index: common.mk =================================================================== --- common.mk (revision 12066) +++ common.mk (working copy) @@ -92,5 +92,7 @@ TESTWORKDIR = testwork BOOTSTRAPRUBY = $(MINIRUBY) -all: $(MKFILES) $(PREP) $(RBCONFIG) $(LIBRUBY) +VCS = svn + +all: $(MKFILES) $(PREP) $(REVISION_UP) $(RBCONFIG) $(LIBRUBY) @$(MINIRUBY) $(srcdir)/ext/extmk.rb $(EXTMK_ARGS) prog: $(PROGRAM) $(WPROGRAM) @@ -531,5 +533,5 @@ variable.$(OBJEXT): {$(VPATH)}variable.c version.$(OBJEXT): {$(VPATH)}version.c {$(VPATH)}ruby.h config.h \ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \ - {$(VPATH)}version.h + {$(VPATH)}version.h {$(VPATH)}$(REVISION_H) compile.$(OBJEXT): {$(VPATH)}compile.c {$(VPATH)}yarvcore.h \ @@ -605,5 +607,5 @@ vm_macro.inc: $(srcdir)/vm_macro.def $(BASERUBY) $(srcdir)/tool/insns2vm.rb $(INSNS2VMOPT) vm_macro.inc -incs: $(INSNS) +incs: $(INSNS) $(REVISION_UP) docs: @@ -667,2 +669,7 @@ vtune: miniruby$(EXEEXT) dist: $(PROGRAM) $(RUNRUBY) $(srcdir)/distruby.rb + +revision-up: new_rev.h + +{$(VPATH)}new_rev.h: PHONY + $(RUBYBUILDTOOLS)$(VCS)-info info --xml | sed -nf $(srcdir)/tool/$(VCS)-info.sed > $@ Index: configure.in =================================================================== --- configure.in (revision 12066) +++ configure.in (working copy) @@ -1673,4 +1673,14 @@ AC_CONFIG_FILES(Makefile, [{ echo; test x"$EXEEXT" = x || echo 'miniruby: miniruby$(EXEEXT)' test "$RUBY_INSTALL_NAME$EXEEXT" = ruby || echo 'ruby: $(PROGRAM);' + echo + echo "### revision information" + if test "`grep '^\#include \"revision\.h\"' ${srcdir}/version.h`"; then + echo "REVISION_H = revision.h" + echo "REVISION_UP = revision-up" + else + echo "REVISION_H = version.h" + echo "REVISION_UP =" + fi + echo sed ['s/{\$([^(){}]*)[^{}]*}//g'] ${srcdir}/common.mk } >> Makefile], [RUBY_INSTALL_NAME=$RUBY_INSTALL_NAME EXEEXT=$EXEEXT]) Index: version.c =================================================================== --- version.c (revision 12066) +++ version.c (working copy) @@ -19,4 +19,5 @@ const char ruby_release_date[] = RUBY_RE const char ruby_platform[] = RUBY_PLATFORM; const int ruby_patchlevel = RUBY_PATCHLEVEL; +const int ruby_revision = RUBY_REVISION; void @@ -31,4 +32,5 @@ Init_version(void) rb_define_global_const("RUBY_PLATFORM", p); rb_define_global_const("RUBY_PATCHLEVEL", INT2FIX(RUBY_PATCHLEVEL)); + rb_define_global_const("RUBY_REVISION", INT2FIX(RUBY_REVISION)); } @@ -36,5 +38,6 @@ void ruby_show_version(void) { - printf("ruby %s (%s patchlevel %d) [%s]\n", RUBY_VERSION, RUBY_RELEASE_DATE, RUBY_PATCHLEVEL, RUBY_PLATFORM); + printf("ruby %s (%s %s %d) [%s]\n", RUBY_VERSION, RUBY_RELEASE_DATE, + RUBY_RELEASE_STR, RUBY_RELEASE_NUM, RUBY_PLATFORM); fflush(stdout); } Index: version.h =================================================================== --- version.h (revision 12066) +++ version.h (working copy) @@ -1,17 +1,44 @@ #define RUBY_VERSION "1.9.0" -#define RUBY_RELEASE_DATE "2007-03-14" #define RUBY_VERSION_CODE 190 -#define RUBY_RELEASE_CODE 20070314 -#define RUBY_PATCHLEVEL 0 - #define RUBY_VERSION_MAJOR 1 #define RUBY_VERSION_MINOR 9 #define RUBY_VERSION_TEENY 0 -#define RUBY_RELEASE_YEAR 2007 -#define RUBY_RELEASE_MONTH 3 -#define RUBY_RELEASE_DAY 14 +#define RUBY_PATCHLEVEL 0 +#include "revision.h" +#define RUBY_BIRTH_YEAR 1993 +#define RUBY_BIRTH_MONTH 2 +#define RUBY_BIRTH_DAY 24 + +#if RUBY_VERSION_TEENY > 0 && RUBY_PATCHLEVEL < 5000 +#define RUBY_RELEASE_STR "patchlevel" +#define RUBY_RELEASE_NUM RUBY_PATCHLEVEL +#else +#ifdef RUBY_BRANCH_NAME +#define RUBY_RELEASE_STR RUBY_BRANCH_NAME +#else +#define RUBY_RELEASE_STR "revision" +#endif +#define RUBY_RELEASE_NUM RUBY_REVISION +#endif + +#ifdef RUBY_EXTERN RUBY_EXTERN const char ruby_version[]; RUBY_EXTERN const char ruby_release_date[]; RUBY_EXTERN const char ruby_platform[]; RUBY_EXTERN const int ruby_patchlevel; +#endif Index: tool/ifchange =================================================================== --- tool/ifchange (revision 0) +++ tool/ifchange (revision 0) @@ -0,0 +1,16 @@ +#!/bin/sh +# usage: ifchange target temporary + +target="$1" +temp="$2" +if [ "$temp" = - ]; then + temp="tmpdata$$.tmp~" + cat > "$temp" || exit $? +fi +if cmp "$target" "$temp" >/dev/null 2>&1; then + echo "$target unchanged" + rm -f "$temp" +else + echo "$target updated" + mv -f "$temp" "$target" +fi Property changes on: tool/ifchange ___________________________________________________________________ Name: svn:executable + * Name: svn:eol-style + LF Index: tool/revision.sed =================================================================== --- tool/revision.sed (revision 0) +++ tool/revision.sed (revision 0) @@ -0,0 +1,5 @@ +#!/bin/sed -f +/^#include "revision\.h"/{ +r revision.h +d +} Property changes on: tool/revision.sed ___________________________________________________________________ Name: svn:eol-type + LF Name: svn:executable + * Index: tool/svn-info =================================================================== --- tool/svn-info (revision 0) +++ tool/svn-info (revision 0) @@ -0,0 +1,9 @@ +#!/bin/sh + +LANG=C LC_ALL=C LC_TIME=C LC_MESSAGES=C TZ=GMT-9 +export LANG +export LC_ALL +export LC_TIME +export LC_MESSAGES +export TZ +exec svn info "$@" Property changes on: tool/svn-info ___________________________________________________________________ Name: svn:executable + * Name: svn:eol-style + LF Index: tool/svn-info.sed =================================================================== --- tool/svn-info.sed (revision 0) +++ tool/svn-info.sed (revision 0) @@ -0,0 +1,27 @@ +#!/bin/sed -nf +s|^[^:]* || +/^Root:/{H;g;/\nURL:/!b} +/^URL:/{H;g;/\nRoot:/!b} +/^Rev: */{s//#define RUBY_REVISION /p;b} +/^Date: *\(\([1-9][0-9]*\)-\(0*\([1-9][0-9]*\)\)-\(0*\([1-9][0-9]*\)\)\).*/{ + s//\ +DATE "\1"\ +CODE \2\3\5\ +YEAR \2\ +MONTH \4\ +DAY \6\ +/ + s/\n*$// + s/\n\([^\n]\)/\n#define RUBY_RELEASE_\1/g + s/^\n*// + p + n +} +s/\(.*\)\(\nURL:[^\n]*\)/\2\1/ +s/\(.*\)\(\nRoot:[^\n]*\)/\2\1/ +/^\nRoot:\([^\n]*\)\nURL:\1\//{ + s/// + s|^branches/|| + s/^[^\n]*/#define RUBY_BRANCH_NAME "&"/ + P;D +} Property changes on: tool/svn-info.sed ___________________________________________________________________ Name: svn:executable + * Name: svn:eol-style + LF Index: win32/Makefile.sub =================================================================== --- win32/Makefile.sub (revision 12066) +++ win32/Makefile.sub (working copy) @@ -51,5 +51,6 @@ AR = lib -nologo PURIFY = AUTOCONF = autoconf -RM = $(COMSPEC) /C $(srcdir:/=\)\win32\rm.bat +RUBYBUILDTOOLS = $(COMSPEC) /C $(srcdir:/=\)\win32\ +RM = $(RUBYBUILDTOOLS)rm.bat !if !defined(BASERUBY) BASERUBY = ruby @@ -197,4 +198,12 @@ ASMEXT = asm INSTALLED_LIST= .installed.list +!if [find "revision.h" $(srcdir:/=\)\version.h > nul] == 0 +REVISION_H = revision.h +REVISION_UP = revision-up +!else +REVISION_H = version.h +REVISION_UP = +!endif + WINMAINOBJ = winmain.$(OBJEXT) MINIOBJS = dmydln.$(OBJEXT) @@ -219,5 +228,5 @@ config.status: $(CONFIG_H) $(CONFIG_H): $(MKFILES) $(srcdir)/win32/Makefile.sub @echo Creating config.h - @$(COMSPEC) /C $(srcdir:/=\)\win32\ifchange.bat config.h << + @$(RUBYBUILDTOOLS)ifchange config.h << #if _MSC_VER != $(MSC_VER) #error MSC version unmatch @@ -561,2 +570,5 @@ dir.$(OBJEXT) win32.$(OBJEXT): {$(srcdir ext/extinit.obj: ext/extinit.c $(SETUP) $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) -Fo$@ -c ext/extinit.c + +revision-up: + @$(RUBYBUILDTOOLS)ifchange $(srcdir:/=\)\revision.h $(srcdir:/=\)\new_rev.h Index: win32/svn-info.bat =================================================================== --- win32/svn-info.bat (revision 0) +++ win32/svn-info.bat (revision 0) @@ -0,0 +1,7 @@ +@echo off +set LANG=C +set LC_ALL=C +set LC_TIME=C +set LC_MESSAGES=C +set TZ=GMT-9 +svn info %* Property changes on: win32/svn-info.bat ___________________________________________________________________ Name: svn:executable + * Name: svn:eol-style + CRLF -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦