source: mypx/utils/makerelease

このファイルの最終更新内容7 で kominami が 2015/09/12 9:22:12 に更新しました

TOPPERS/ASP 1.9.1

ファイルサイズ: 4.1 KB
Rev 
[7]1#! /usr/bin/perl
2#
3#  TOPPERS Software
4#      Toyohashi Open Platform for Embedded Real-Time Systems
5#
6#  Copyright (C) 2006-2011 by Embedded and Real-Time Systems Laboratory
7#              Graduate School of Information Science, Nagoya Univ., JAPAN
8#
9#  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
10#  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
11#  ÊÑ¡ŠºÆÇÛÉۡʰʲŒ¡€ÍøÍрȞƀ֡ˀ¹€ë€³€È€ò̵œþ€ÇµöÂú€¹€ë¡¥
12#  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
13#      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€Î̵ÊÝŸÚµ¬Äꀬ¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
14#      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
15#  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
16#      Íрǀ­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
17#      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
18#      €Î̵ÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
19#  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁȀ߹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
20#      Íрǀ­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
21#      €È¡¥
22#    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍьԥޥ˥奢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
23#        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€Î̵ÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
24#    (b) ºÆÇÛÉۀηÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
25#        Êó¹ð€¹€ë€³€È¡¥
26#  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍрˀè€êÄŸÀÜŪ€Þ€¿€ÏŽÖÀÜŪ€ËÀž€ž€ë€€€«€Ê€ë»
27#      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
28#      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
29#      ͳ€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
30#      ÌÈÀÕ€¹€ë€³€È¡¥
31#
32#  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
33#  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜŪ
34#  €ËÂЀ¹€ëŬ¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
35#  ¥¢€ÎÍøÍрˀè€êÄŸÀÜŪ€Þ€¿€ÏŽÖÀÜŪ€ËÀž€ž€¿€€€«€Ê€ë»³²€ËŽØ€·€Æ€â¡€€œ
36#  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
37#
38#  @(#) $Id$
39#
40
41use Cwd;
42
43$cwd = getcwd();
44$cwd =~ s/^.*[\/\\]([^\/\\]+)$/$1/;
45$prefix = "./".$cwd;
46
47@file_list = ();
48%file_list = ();
49
50if ($#ARGV >= 0) {
51        $arg1 = $ARGV[0];
52        $arg1 =~ s/\.\///;
53}
54else {
55        $arg1 = "MANIFEST";
56}
57
58sub gen_path
59{
60        local($base, $path) = @_;
61
62        while ($path =~ /^..\/(.*)$/) {
63                $path = $1;
64                $base =~ s/(\/?)[^\/]*\/$/$1/;
65        }
66        return($base.$path);
67}
68
69sub read_file {
70        local($filename) = @_;
71        local($fh, $dirname);
72
73        if ($filename =~ /^(.*\/)[^\/]*$/) {
74                $dirname = $1;
75        }
76        else {
77                $dirname = "";
78        }
79
80        open($fh, $filename) || die "Cannot open $filename";
81        while ($line = <$fh>) {
82                chomp $line;
83                $line =~ s/\r$//;
84                $line =~ s/[ \t]*\#.*$//;
85                next if ($line =~ /^[ \t]*$/);
86
87                if ($line =~ /^E_PACKAGE[ \t]+(.*)$/) {
88                        if ($package) {
89                                die "Duplicated E_PACKAGE directive.";
90                        }
91                        else {
92                                $package = $1;
93                                $e_package = 1;
94                        }
95                }
96                elsif ($line =~ /^PACKAGE[ \t]+(.*)$/) {
97                        if ($package) {
98                                if (!$e_package && $package != $1) {
99                                        die "Inconsistent PACKAGE directive.";
100                                }
101                        }
102                        else {
103                                $package = $1;
104                        }
105                }
106                elsif ($line =~ /^VERSION[ \t]+(.*)$/) {
107                        if ($version) {
108                                if (!$e_package && $version != $1) {
109                                        die "Inconsistent VERSION directive.";
110                                }
111                        }
112                        else {
113                                $version = $1;
114                                if ($version =~ /%date/) {
115                                        @current_time = localtime();
116                                        $vdate = sprintf("%04d%02d%02d", $current_time[5]+1900,
117                                                                                $current_time[4]+1, $current_time[3]);
118                                        $version =~ s/%date/$vdate/;
119                                }
120                        }
121                }
122                elsif ($line =~ /^INCLUDE[ \t]+(.*)$/) {
123                        read_file(gen_path($dirname, $1));
124                }
125                else {
126                        $filename = $prefix."/".$dirname.$line;
127                        while ($filename =~ s|/[^/]+/\.\./|/|) {}
128                        if ($file_list{$filename}) {
129                                die "$filename is duplicated.";
130                        }
131                        else {
132                                push(@file_list, $filename);
133                                $file_list{$filename} = $filename;
134                        }
135                }
136        }
137        close($fh);
138}
139
140read_file($arg1);
141unless ($package) {
142        die "PACKAGE/E_PACKAGE directive not found.";
143}
144unless ($version) {
145        die "VERSION directive not found.";
146}
147
148if (! -d "RELEASE") {
149        mkdir("RELEASE");
150}
151
152$archive_name = $package."-".$version.".tar.gz";
153$file_list = join(" ", @file_list);
154$command = "tar cvfz RELEASE/$archive_name -C .. $file_list\n";
155die if (system($command));
156print STDERR "== RELEASE/$archive_name is generated. ==\n";
詳しい使い方は TracBrowser を参照してください。