update
@@ -22,6 +22,8 @@ | ||
22 | 22 | # xpkg dependency resolve library |
23 | 23 | # |
24 | 24 | |
25 | +DeffilesCache = ".xpkg-batch.cache" | |
26 | + | |
25 | 27 | class PkgDep < Pkg |
26 | 28 | |
27 | 29 | attr_reader :deffile, :dir, :names, :depends, :level |
@@ -114,18 +116,26 @@ | ||
114 | 116 | |
115 | 117 | # load definition files |
116 | 118 | def loaddeffiles |
117 | - deflist = `find . -name "pkgdef" -print`.split | |
119 | + deflist = loaddeflist_from_cache | |
120 | + if (deflist == nil) | |
121 | + # no cache | |
122 | + puts "Searching pkgdef files..." if ($verbose) | |
118 | 123 | |
119 | - `find . -name "pkgdef.list" -print`.split.each do |list| | |
120 | - dir = list.gsub(%r|pkgdef.list$|, "") | |
124 | + deflist = `find . -name "pkgdef" -print`.split | |
121 | 125 | |
122 | - IO.readlines(list).each do |line| | |
123 | - line.chop! | |
124 | - line.strip! | |
125 | - next if (line == "" || line =~ /^#/) | |
126 | + `find . -name "pkgdef.list" -print`.split.each do |list| | |
127 | + dir = list.gsub(%r|pkgdef.list$|, "") | |
126 | 128 | |
127 | - deflist.push(dir + line) | |
129 | + IO.readlines(list).each do |line| | |
130 | + line.chop! | |
131 | + line.strip! | |
132 | + next if (line == "" || line =~ /^#/) | |
133 | + | |
134 | + deflist.push(dir + line) | |
135 | + end | |
128 | 136 | end |
137 | + | |
138 | + savedeflist_to_cache(deflist) | |
129 | 139 | end |
130 | 140 | |
131 | 141 | deflist.each do |f| |
@@ -136,6 +146,34 @@ | ||
136 | 146 | end |
137 | 147 | end |
138 | 148 | |
149 | + def savedeflist_to_cache(deflist) | |
150 | + open(DeffilesCache, "w") do |fh| | |
151 | + deflist.each do |line| | |
152 | + fh.puts line | |
153 | + end | |
154 | + end | |
155 | + end | |
156 | + | |
157 | + def loaddeflist_from_cache | |
158 | + if (FileTest.exist?(DeffilesCache)) | |
159 | + puts "Use xpkg-batch cache" if ($verbose) | |
160 | + deflist = Array.new | |
161 | + IO.readlines(DeffilesCache).each do |line| | |
162 | + line.chop! | |
163 | + line.strip! | |
164 | + deflist.push(line) | |
165 | + end | |
166 | + return deflist | |
167 | + end | |
168 | + return nil | |
169 | + end | |
170 | + | |
171 | + def clear_deflist_cache | |
172 | + if (FileTest.exist?(DeffilesCache)) | |
173 | + File.unlink(DeffilesCache) | |
174 | + end | |
175 | + end | |
176 | + | |
139 | 177 | # resolve dependency |
140 | 178 | def resolvedeps |
141 | 179 | # first, purge unknown package names |
@@ -1,4 +1,7 @@ | ||
1 | -* 2005/9/30 ver 1.0.5 : Takuya Murakami <tmurakam@mtd.biglobe.ne.jp> | |
1 | +* 2005/10/5 ver 1.0.5 : Takuya Murakami <tmurakam@mtd.biglobe.ne.jp> | |
2 | + - xpkg-batch: use cache file | |
3 | + | |
4 | +* 2005/9/30 : Takuya Murakami <tmurakam@mtd.biglobe.ne.jp> | |
2 | 5 | - bug fix: xpkg-batch does not handle -t option. |
3 | 6 | |
4 | 7 | * 2005/7/30 ver 1.0.4 : Takuya Murakami <tmurakam@mtd.biglobe.ne.jp> |