[ruby-dev:30579] Re: release code and revision number
From:
"Nobuyoshi Nakada" <nobu@...>
Date:
2007-03-14 10:04:26 UTC
List:
ruby-dev #30579
なかだです。
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はできる。
中田 伸悦