source: EcnlProtoTool/trunk/asp3_dcre/utils/makerelease.rb@ 270

Last change on this file since 270 was 270, checked in by coas-nagasima, 7 years ago

mruby版ECNLプロトタイピング・ツールを追加

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-ruby
File size: 5.3 KB
Line 
1#!/usr/bin/env ruby
2# -*- coding: utf-8 -*-
3#
4# TOPPERS Software
5# Toyohashi Open Platform for Embedded Real-Time Systems
6#
7# Copyright (C) 2006-2016 by Embedded and Real-Time Systems Laboratory
8# Graduate School of Information Science, Nagoya Univ., JAPAN
9#
10# 上記著作権者
11は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
12# ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
13# 変・再é…
14å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
15# (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
16# 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
17# スコード中に含まれていること.
18# (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
19# 用できる形で再é…
20å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
21å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
22# 者
23マニュアルなど)に,上記の著作権表示,この利用条件および下記
24# の無保証規定を掲載すること.
25# (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
26# 用できない形で再é…
27å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
28# と.
29# (a) 再é…
30å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
31マニュアルなど)に,上記の著
32# 作権表示,この利用条件および下記の無保証規定を掲載すること.
33# (b) 再é…
34å¸ƒã®å½¢æ…
35‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
36# 報告すること.
37# (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
38# 害からも,上記著作権者
39およびTOPPERSプロジェクトをå…
40è²¬ã™ã‚‹ã“と.
41# また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
42# 由に基づく請求からも,上記著作権者
43およびTOPPERSプロジェクトを
44# å…
45è²¬ã™ã‚‹ã“と.
46#
47# 本ソフトウェアは,無保証で提供されているものである.上記著作権者
48お
49# よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
50# に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
51# アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
52# の責任を負わない.
53#
54# $Id: makerelease.rb 1011 2016-07-11 02:20:01Z coas-nagasima $
55#
56
57require "shell"
58
59#
60# ".."を含むパスの整形
61#
62# 例)"yyy/../zzz" → "zzz"
63# 例)"xxx/yyy/../zzz" → "xxx/zzz"
64#
65def canonicalPath(path)
66 while path.sub!(/([^\/]+\/\.\.\/)/, "") do end
67 return(path)
68end
69
70#
71# ファイルの読み込み
72#
73def readFile(inFileName)
74 baseDirectory = File.dirname(inFileName)
75 if (baseDirectory == ".")
76 baseDirectory = ""
77 else
78 baseDirectory += "/"
79 end
80
81 begin
82 inFile = File.open(inFileName)
83 rescue Errno::ENOENT, Errno::EACCES => ex
84 abort(ex.message)
85 end
86
87 inFile.each do |line|
88 line.chomp!
89 line.sub!(/\s*\#.*$/, "")
90 next if /^\s*$/ =~ line
91
92 if /^E_PACKAGE[ \t]+(.*)$/ =~ line
93 if $package != ""
94 abort("Duplicated E_PACKAGE directive.")
95 else
96 $package = $1
97 $e_package = 1
98 end
99 elsif /^PACKAGE[ \t]+(.*)$/ =~ line
100 if $package != ""
101 if !$e_package && $package != $1
102 abort("Inconsistent PACKAGE directive.")
103 end
104 else
105 $package = $1
106 end
107 elsif /^VERSION[ \t]+(.*)$/ =~ line
108 if $version != ""
109 if !$e_package && $version != $1
110 abort("Inconsistent VERSION directive.")
111 end
112 else
113 $version = $1
114 if /%date/ =~ $version
115 currentTime = Time.now.localtime
116 vdate = sprintf("%04d%02d%02d", currentTime.year,
117 currentTime.month, currentTime.day)
118 $version.sub!(/%date/, vdate)
119 end
120 end
121 elsif /^INCLUDE[ \t]+(.*)$/ =~ line
122 readFile(canonicalPath(baseDirectory + $1))
123 else
124 fileName = $prefix + "/" + canonicalPath(baseDirectory + line)
125 if !File.file?("../" + fileName)
126 abort("#{fileName} is not a file.")
127 elsif $fileList.index(fileName)
128 abort("#{fileName} is duplicated.")
129 else
130 $fileList.push(fileName)
131 end
132 end
133 end
134end
135
136#
137# 初期化
138#
139$package = ""
140$e_package = 0
141$version = ""
142$fileList = []
143
144#
145# プリフィックス(./カレントディレクトリ名)の取り出し
146#
147cwd = Shell.new.cwd
148$prefix = "./" + File.basename(cwd)
149
150#
151# パラメータの取り出し
152#
153if ARGV.length >= 1
154 arg = ARGV.shift.dup
155 arg.sub!(/\/$/, "/MANIFEST")
156 arg.sub!(/^\.\//, "")
157else
158 arg = "MANIFEST"
159end
160
161#
162# ファイルの読み込み
163#
164readFile(arg)
165if $package == ""
166 abort("PACKAGE/E_PACKAGE directive not found.")
167end
168if $version == ""
169 abort("VERSION directive not found.")
170end
171
172#
173# RELEASEディレクトリの作成
174#
175if !File.directory?("RELEASE")
176 Dir.mkdir("RELEASE")
177end
178
179#
180# アーカイブ(.tar.gz)の作成
181#
182archiveName = $package + "-" + $version + ".tar.gz"
183fileListStr = $fileList.join(" ")
184command = "tar cvfz RELEASE/#{archiveName} -C .. #{fileListStr}\n";
185system(command)
186puts("== RELEASE/#{archiveName} is generated. ==\n")
Note: See TracBrowser for help on using the repository browser.