source: azure_iot_hub/trunk/asp3_dcre/utils/makerelease.rb@ 389

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

ビルドが通るよう更新

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