[Ttssh2-commit] [8937] perlを自動的に探すようにした, 使用する svn を toolinfo.txt に書くようにした

Back to archive index
scmno****@osdn***** scmno****@osdn*****
2020年 9月 12日 (土) 00:47:33 JST


Revision: 8937
          https://osdn.net/projects/ttssh2/scm/svn/commits/8937
Author:   zmatsuo
Date:     2020-09-12 00:47:32 +0900 (Sat, 12 Sep 2020)
Log Message:
-----------
perlを自動的に探すようにした, 使用する svn を toolinfo.txt に書くようにした

- perl は次のデフォルトフォルダを探す
  - buildtools/perl (ActivePerl)
  - ActivePerl
  - Strawberry perl
  - cygwin

Modified Paths:
--------------
    trunk/doc/en/html/reference/develop.txt
    trunk/doc/ja/html/reference/develop.txt
    trunk/svnrev_perl/readme.md
    trunk/svnrev_perl/svnrev.bat
    trunk/svnrev_perl/svnrev.pl

Added Paths:
-----------
    trunk/svnrev_perl/svnversion.default.h
    trunk/svnrev_perl/toolinfo_sample.txt

-------------- next part --------------
Modified: trunk/doc/en/html/reference/develop.txt
===================================================================
--- trunk/doc/en/html/reference/develop.txt	2020-09-08 15:14:36 UTC (rev 8936)
+++ trunk/doc/en/html/reference/develop.txt	2020-09-11 15:47:32 UTC (rev 8937)
@@ -42,6 +42,7 @@
   ISTool 5.3.0.1 (https://sourceforge.net/projects/istool/)
 - others
   Cygwin 1.5.x (1.7.x doesn't support Windows 9x)
+------
   ActivePerl 5.10 or later version
     converts character-code and return-code of documents for building OpenSSL.
   Subversion for Windows (http://sourceforge.net/projects/win32svn/)
@@ -48,7 +49,19 @@
     Use the compatible version for check-outed svn version.
     Extract into libs\svn. ("svnversion.exe" is located in libs\svn\bin directory.)
 
+  Cygwin 1.5.x (1.7.x \x82\xCD Windows 9x \x82\xF0\x83T\x83|\x81[\x83g\x82\xB5\x82Ă\xA2\x82Ȃ\xA2\x82̂ŕs\x89\xC2)
+  ActivePerl 5.10 \x88ȏ\xE3 \x82܂\xBD\x82\xCD Strawberry perl 5.30.1.1 \x88ȏ\xE3
+    \x83r\x83\x8B\x83h\x89ߒ\xF6\x82Ŏg\x97p\x82\xB5\x82܂\xB7
+    - OpenSSL \x82̃R\x83\x93\x83p\x83C\x83\x8B(\x95K\x90{)
+    - \x83h\x83L\x83\x85\x83\x81\x83\x93\x83g\x83t\x83@\x83C\x83\x8B\x82̕\xB6\x8E\x9A\x83R\x81[\x83h\x81E\x89\xFC\x8Ds\x83R\x81[\x83h\x95ϊ\xB7(\x95K\x90{)
+    - \x83\x8A\x83r\x83W\x83\x87\x83\x93\x94ԍ\x86\x8E擾 (perl\x82\xAA\x82Ȃ\xA2\x8Fꍇ\x83\x8A\x83r\x83W\x83\x87\x83\x93\x94ԍ\x86\x82\xF0\x8E擾\x82\xB9\x82\xB8\x82Ƀr\x83\x8B\x83h\x82\xB5\x82܂\xB7)
+  Subversion for Windows (http://sourceforge.net/projects/win32svn/)
+    \x83\x8A\x83r\x83W\x83\x87\x83\x93\x94ԍ\x86\x8E擾\x8E\x9E\x82Ɏg\x97p\x82\xB5\x82܂\xB7
+    svnrev_perl/toolinfo.txt \x82\xC9 svn.exe \x82̃t\x83\x8B\x83p\x83X\x82\xF0\x8BL\x8Fq\x82\xA2\x82Ă\xAD\x82\xBE\x82\xB3\x82\xA2\x81B
+    \x8Fڂ\xB5\x82\xAD\x82\xCD svnrev_perl/readme.md \x82\xF0\x8EQ\x8FƂ\xAD\x82\xBE\x82\xB3\x82\xA2
+------
 
+
 * Libraries
 - Oniguruma 6.9.3 (https://github.com/kkos/oniguruma)
 - OpenSSL 1.1.1d (http://www.openssl.org/)

Modified: trunk/doc/ja/html/reference/develop.txt
===================================================================
--- trunk/doc/ja/html/reference/develop.txt	2020-09-08 15:14:36 UTC (rev 8936)
+++ trunk/doc/ja/html/reference/develop.txt	2020-09-11 15:47:32 UTC (rev 8937)
@@ -46,11 +46,15 @@
   ISTool 5.3.0.1 (https://sourceforge.net/projects/istool/)
 - \x82\xBB\x82̑\xBC
   Cygwin 1.5.x (1.7.x \x82\xCD Windows 9x \x82\xF0\x83T\x83|\x81[\x83g\x82\xB5\x82Ă\xA2\x82Ȃ\xA2\x82̂ŕs\x89\xC2)
-  ActivePerl 5.10 \x88ȏ\xE3
-    OpenSSL \x82̃R\x83\x93\x83p\x83C\x83\x8B\x81A\x83h\x83L\x83\x85\x83\x81\x83\x93\x83g\x83t\x83@\x83C\x83\x8B\x82̕\xB6\x8E\x9A\x83R\x81[\x83h\x81E\x89\xFC\x8Ds\x83R\x81[\x83h\x95ϊ\xB7\x82ɕK\x97v\x82ł\xB7\x81B
+  ActivePerl 5.10 \x88ȏ\xE3 \x82܂\xBD\x82\xCD Strawberry perl 5.30.1.1 \x88ȏ\xE3
+    \x83r\x83\x8B\x83h\x89ߒ\xF6\x82Ŏg\x97p\x82\xB5\x82܂\xB7
+    - OpenSSL \x82̃R\x83\x93\x83p\x83C\x83\x8B(\x95K\x90{)
+    - \x83h\x83L\x83\x85\x83\x81\x83\x93\x83g\x83t\x83@\x83C\x83\x8B\x82̕\xB6\x8E\x9A\x83R\x81[\x83h\x81E\x89\xFC\x8Ds\x83R\x81[\x83h\x95ϊ\xB7(\x95K\x90{)
+    - \x83\x8A\x83r\x83W\x83\x87\x83\x93\x94ԍ\x86\x8E擾 (perl\x82\xAA\x82Ȃ\xA2\x8Fꍇ\x83\x8A\x83r\x83W\x83\x87\x83\x93\x94ԍ\x86\x82\xF0\x8E擾\x82\xB9\x82\xB8\x82Ƀr\x83\x8B\x83h\x82\xB5\x82܂\xB7)
   Subversion for Windows (http://sourceforge.net/projects/win32svn/)
-    \x83\\x81[\x83X\x82̃`\x83F\x83b\x83N\x83A\x83E\x83g\x82Ɏg\x82\xC1\x82\xBD svn \x82ƌ݊\xB7\x90\xAB\x82̂\xA0\x82\xE9\x83o\x81[\x83W\x83\x87\x83\x93\x81B
-    libs\svn \x82։𓀂\xB5\x82܂\xB7\x81B("svnversion.exe" \x82\xAA libs\svn\bin \x82ɔz\x92u\x82\xB3\x82\xEA\x82\xE9\x82悤\x82ɂ\xB5\x82Ă\xAD\x82\xBE\x82\xB3\x82\xA2)
+    \x83\x8A\x83r\x83W\x83\x87\x83\x93\x94ԍ\x86\x8E擾\x8E\x9E\x82Ɏg\x97p\x82\xB5\x82܂\xB7
+    svnrev_perl/toolinfo.txt \x82\xC9 svn.exe \x82̃t\x83\x8B\x83p\x83X\x82\xF0\x8BL\x8Fq\x82\xA2\x82Ă\xAD\x82\xBE\x82\xB3\x82\xA2\x81B
+    \x8Fڂ\xB5\x82\xAD\x82\xCD svnrev_perl/readme.md \x82\xF0\x8EQ\x8FƂ\xAD\x82\xBE\x82\xB3\x82\xA2
 
 
 \x81\xA1 \x83\x89\x83C\x83u\x83\x89\x83\x8A

Modified: trunk/svnrev_perl/readme.md
===================================================================
--- trunk/svnrev_perl/readme.md	2020-09-08 15:14:36 UTC (rev 8936)
+++ trunk/svnrev_perl/readme.md	2020-09-11 15:47:32 UTC (rev 8937)
@@ -2,16 +2,21 @@
 
 - svn(又は git)の情報からヘッダファイルとバッチファイルを作成する
   - `../teraterm/ttpdlg/svnversion.h`
-  - `svnversion.bat`
+  - `sourcetree_info.bat`
 
 ## 準備
 
-- svn(又は git)を実行できるようパスを設定する
-  - 実行できない場合もヘッダファイルは作成されます
-- perlを実行できるようパスを設定する
-  - libs/perl があれば利用します
-    - buildtools/getperl.bat をダブルクリックすると
-      strawberry perl を libs/perl に展開します
+- perl を実行できるようにしておく
+  - perl が実行できるよう環境変数 PATH を設定する
+  - または、../buildtools/libs/perl があれば使用する
+    - ../buildtools/getperl.bat をダブルクリックすると
+      strawberry perl が buildtools/perl に展開される
+  - または、いくつかのメジャーなperlを探して見つければ使用する
+  - perl が見つからない場合は svnversion.default.h が使用される
+- svn(又は git)を実行できるようにする
+  - svn が実行できるよう環境変数 PATH を設定する
+  - または、toolinfo.txt にツールのパスを書いておく
+  - ツールが実行できない場合もヘッダファイルは作成されます
 
 # ヘッダの作成方法
 
@@ -36,3 +41,5 @@
   - svnコマンドのパス
 - --git
   - gitコマンドのパス
+
+オプションが toolinfo.txt より優先されます

Modified: trunk/svnrev_perl/svnrev.bat
===================================================================
--- trunk/svnrev_perl/svnrev.bat	2020-09-08 15:14:36 UTC (rev 8936)
+++ trunk/svnrev_perl/svnrev.bat	2020-09-11 15:47:32 UTC (rev 8937)
@@ -1,14 +1,47 @@
 @echo off
 setlocal
 cd /d %~dp0
+set BAT=%~n0%~x0
 
 set SVNVERSION_H=../teraterm/ttpdlg/svnversion.h
+set SVNVERSION_H_DOS=..\teraterm\ttpdlg\svnversion.h
 
-if EXIST %SVNVERSION_H% goto finish
+if NOT EXIST %SVNVERSION_H% goto env_perl
+ @ echo %BAT%: already exist %SVNVERSION_H%
+goto finish
 
-set PERL=..\libs\perl\perl\bin\perl.exe
-if NOT EXIST %PERL% set PERL=perl.exe
+:env_perl
+if NOT "%PERL%" == "" goto found_perl
 
+:search_perl
+set PERL=perl.exe
+where %PERL% > nul 2>&1
+if %errorlevel% == 0 goto found_perl
+set PERL=%~dp0..\buildtools\perl\perl\bin\perl.exe
+if exist %PERL% goto found_perl
+set PERL=C:\Strawberry\perl\bin\perl.exe
+if exist %PERL% goto found_perl
+set PERL=C:\Perl64\bin\perl.exe
+if exist %PERL% goto found_perl
+set PERL=C:\Perl\bin\perl.exe
+if exist %PERL% goto found_perl
+set PERL=C:\cygwin64\usr\bin\perl.exe
+if exist %PERL% goto found_perl
+set PERL=C:\cygwin\usr\bin\perl.exe
+if exist %PERL% goto found_perl
+goto no_perl
+
+:no_perl
+ @ echo %BAT%: perl not found
+ @ echo %BAT%: default svnversion.h is used
+if exist sourcetree_info.bat del sourcetree_info.bat
+type svnversion.default.h > %SVNVERSION_H_DOS%
+goto finish
+
+:found_perl
+ @ echo %BAT%: perl=%PERL%
 %PERL% svnrev.pl --root .. --header %SVNVERSION_H%
+goto finish
 
+
 :finish

Modified: trunk/svnrev_perl/svnrev.pl
===================================================================
--- trunk/svnrev_perl/svnrev.pl	2020-09-08 15:14:36 UTC (rev 8936)
+++ trunk/svnrev_perl/svnrev.pl	2020-09-11 15:47:32 UTC (rev 8937)
@@ -1,6 +1,7 @@
 use utf8;
 use Getopt::Long 'GetOptions';
 use POSIX 'strftime';
+binmode STDOUT, ':encoding(utf8)';
 
 $version = "5.0";
 $svn = "svn";
@@ -14,6 +15,30 @@
 $verbose = 0;
 $script_name = $0;
 
+sub read_toolinfo {
+	my $info = "toolinfo.txt";
+	if (!-f $info) {
+		return;
+	}
+	open(my $FD, "<:utf8:crlf", $info);
+	while (my $l = <$FD>) {
+		chomp $l;
+		$str =~ s/^\x{FEFF}//;	# remove BOM
+		if ($l =~ /^#/) {
+			next;
+		}
+		if ($l =~ /^svn=\s*(.*)$/) {
+			$svn = $1;
+		}
+		if ($l =~ /^git=\s*(.*)$/) {
+			$git = $1;
+		}
+	}
+	close($FD);
+}
+
+&read_toolinfo();
+
 GetOptions(
 	'root=s' => \$source_root,
 	'svn=s' => \$svn,
@@ -20,11 +45,14 @@
 	'git=s' => \$git,
 	'header=s' => \$out_header,
 	'bat=s' => \$out_bat,
-	'cmake=s' => \$out_cmake
+	'cmake=s' => \$out_cmake,
+	'verbose' => \$verbose
 );
 
 $git =~ s/"//g;
+$git =~ s/\\/\//g;
 $svn =~ s/"//g;
+$svn =~ s/\\/\//g;
 
 if ($verbose != 0) {
 	print "root=$source_root\n";

Added: trunk/svnrev_perl/svnversion.default.h
===================================================================
--- trunk/svnrev_perl/svnversion.default.h	                        (rev 0)
+++ trunk/svnrev_perl/svnversion.default.h	2020-09-11 15:47:32 UTC (rev 8937)
@@ -0,0 +1,4 @@
+/* default svnversion.h */
+#define SVNVERSION 0000
+#undef TERATERM_RELEASE
+#define BRANCH_NAME "unknown"

Added: trunk/svnrev_perl/toolinfo_sample.txt
===================================================================
--- trunk/svnrev_perl/toolinfo_sample.txt	                        (rev 0)
+++ trunk/svnrev_perl/toolinfo_sample.txt	2020-09-11 15:47:32 UTC (rev 8937)
@@ -0,0 +1,4 @@
+# tool info
+#
+svn="C:\Program Files\TortoiseSVN\bin\svn.exe"
+git="C:\Program Files\Git\bin\git.exe"


Ttssh2-commit メーリングリストの案内
Back to archive index