filament 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/filament.rb +16 -0
- data/lib/filament/package.rb +11 -5
- data/lib/filament/target.rb +1 -2
- data/plugins/01java/lib/filament/java/tools.rb +1 -1
- data/plugins/01java/lib/filament/java/tools/compile.rb +1 -2
- data/plugins/01java/lib/filament/java/tools/execute.rb +11 -11
- data/plugins/01java/lib/filament/java/tools/proguard.rb +41 -0
- data/plugins/02javame/lib/filament/javame/mixins/library_mixin.rb +46 -9
- data/plugins/02javame/lib/filament/javame/mixins/suite_mixin.rb +8 -19
- data/plugins/02javame/lib/filament/javame/suite.rb +1 -0
- data/plugins/02javame/lib/filament/javame/tools/external/mpp_sdk.rb +2 -13
- data/plugins/02javame/lib/filament/javame/tools/external/wtk.rb +2 -13
- data/plugins/02javame/lib/filament/javame/tools/preverifier.rb +0 -1
- metadata +3 -2
data/lib/filament.rb
CHANGED
@@ -20,6 +20,22 @@ require 'filament/artifact'
|
|
20
20
|
require 'filament/util/filelist2'
|
21
21
|
require 'filament/util/fileutils'
|
22
22
|
|
23
|
+
class Module
|
24
|
+
def attr_accessor2(*symbols)
|
25
|
+
# attr_writer(*symbols)
|
26
|
+
symbols.each do |sym|
|
27
|
+
attr_sym = "@#{sym.to_s}".to_sym
|
28
|
+
define_method(sym) do |*val|
|
29
|
+
if val.empty?
|
30
|
+
return instance_variable_get(attr_sym)
|
31
|
+
else
|
32
|
+
return instance_variable_set(attr_sym, val.first)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
23
39
|
module Filament
|
24
40
|
def log(msg)
|
25
41
|
puts msg if $verbose
|
data/lib/filament/package.rb
CHANGED
@@ -17,6 +17,10 @@ module Filament
|
|
17
17
|
end
|
18
18
|
|
19
19
|
class Package
|
20
|
+
def target(name, klass, &block)
|
21
|
+
klass.new(name, &block)
|
22
|
+
end
|
23
|
+
|
20
24
|
attr_reader :parent, :name, :realpath, :workspace, :package_resolver, :target_resolver, :build_context
|
21
25
|
alias :pathname :realpath
|
22
26
|
|
@@ -183,7 +187,9 @@ module Filament
|
|
183
187
|
def subpackages(include_disabled = false)
|
184
188
|
return [] unless parent?
|
185
189
|
|
186
|
-
children = @realpath.children.reject
|
190
|
+
children = @realpath.children.reject do |child|
|
191
|
+
not child.directory? or child.basename.to_s =~ /^\./
|
192
|
+
end
|
187
193
|
|
188
194
|
children.collect! do |child|
|
189
195
|
subpackage(child.basename.to_s)
|
@@ -268,7 +274,7 @@ module Filament
|
|
268
274
|
end
|
269
275
|
|
270
276
|
def descriptor
|
271
|
-
return "#{@realpath}/
|
277
|
+
return "#{@realpath}/package.rb"
|
272
278
|
end
|
273
279
|
|
274
280
|
def << (target)
|
@@ -286,7 +292,7 @@ module Filament
|
|
286
292
|
raise "package descriptor for #{@realpath} does not exist '#{pn}'"
|
287
293
|
end
|
288
294
|
|
289
|
-
@execution_context.
|
295
|
+
@execution_context.execute { instance_eval(pn.read, pn.realpath) }
|
290
296
|
end
|
291
297
|
|
292
298
|
def target_dir(subdir=nil)
|
@@ -296,8 +302,8 @@ module Filament
|
|
296
302
|
pn += "#{subdir}/#{$build_dir_prefix}"
|
297
303
|
end
|
298
304
|
|
299
|
-
|
300
|
-
return pn.
|
305
|
+
# mkdir_p(pn) unless pn.exist?
|
306
|
+
return pn.to_s
|
301
307
|
end
|
302
308
|
|
303
309
|
def working_dir
|
data/lib/filament/target.rb
CHANGED
@@ -104,11 +104,10 @@ module Filament
|
|
104
104
|
return if done?
|
105
105
|
@invoked = true
|
106
106
|
|
107
|
-
puts ">>> BUILDING #{uri} (#{package.pathname}, #{self})"
|
108
|
-
|
109
107
|
@package.execute do
|
110
108
|
@weak_deps.each {|t| t.invoke}
|
111
109
|
@deps.each {|t| t.invoke}
|
110
|
+
puts ">>> BUILDING #{uri} (#{@package.pathname}, #{self})"
|
112
111
|
instance_eval(&@block)
|
113
112
|
end
|
114
113
|
end
|
@@ -27,8 +27,7 @@ module Filament::Java::Tools
|
|
27
27
|
sources = fix_paths(@sources).join(' ')
|
28
28
|
c = "#{JAVAC}"
|
29
29
|
c << " -classpath #{classpath}" unless @classpath.empty?
|
30
|
-
c << " -bootclasspath #{bootclasspath}"
|
31
|
-
unless @bootclasspath.empty?
|
30
|
+
c << " -bootclasspath #{bootclasspath}" unless @bootclasspath.empty?
|
32
31
|
c << " -source #{@source_version}" unless @source_version.nil?
|
33
32
|
c << " -target #{@target_version}" unless @target_version.nil?
|
34
33
|
|
@@ -1,25 +1,23 @@
|
|
1
1
|
module Filament::Java::Tools
|
2
2
|
class Execute
|
3
|
-
attr_writer :classpath, :properties, :mainclass, :args
|
3
|
+
attr_writer :classpath, :properties, :mainclass, :args, :jar
|
4
4
|
|
5
5
|
def initialize(mainclass=nil)
|
6
|
-
init(mainclass)
|
7
|
-
yield self if block_given?
|
8
|
-
execute unless @mainclass.nil?
|
9
|
-
end
|
10
|
-
|
11
|
-
def init(mainclass)
|
12
6
|
@mainclass = mainclass
|
7
|
+
@jar = nil
|
13
8
|
@properties = {}
|
14
9
|
@classpath = []
|
15
10
|
@args = []
|
11
|
+
|
12
|
+
yield self if block_given?
|
13
|
+
execute unless @mainclass.nil? and @jar.nil?
|
16
14
|
end
|
17
15
|
|
18
16
|
def execute
|
19
17
|
c = "#{JAVA} "
|
20
18
|
|
21
19
|
classpath = join_paths(@classpath)
|
22
|
-
c << "-cp #{classpath} " unless classpath.nil?
|
20
|
+
c << "-cp #{classpath} " unless @classpath.nil? or @classpath.empty?
|
23
21
|
|
24
22
|
unless @properties.nil?
|
25
23
|
@properties.each do |k,v|
|
@@ -27,11 +25,13 @@ module Filament::Java::Tools
|
|
27
25
|
end
|
28
26
|
end
|
29
27
|
|
30
|
-
c << @
|
28
|
+
c << "-jar #{@jar} " unless @jar.nil?
|
29
|
+
|
30
|
+
c << @mainclass << " " unless @mainclass.nil?
|
31
31
|
|
32
|
-
c << @args.to_a.join
|
32
|
+
c << @args.to_a.join(' ')
|
33
33
|
|
34
|
-
sys c
|
34
|
+
sys c
|
35
35
|
end
|
36
36
|
end
|
37
37
|
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'tempfile'
|
2
|
+
|
3
|
+
module Filament::Java::Tools
|
4
|
+
class << self
|
5
|
+
def proguard(injars=nil, outjars=nil, &block)
|
6
|
+
Proguard.new(injars, outjars, &block)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
class Proguard
|
11
|
+
def initialize(injars=nil, outjars=nil)
|
12
|
+
@options = []
|
13
|
+
|
14
|
+
self.injars(injars) unless injars.nil?
|
15
|
+
self.outjars(outjars) unless outjars.nil?
|
16
|
+
|
17
|
+
yield self if block_given?
|
18
|
+
|
19
|
+
p self
|
20
|
+
obfuscate
|
21
|
+
end
|
22
|
+
|
23
|
+
def obfuscate
|
24
|
+
tmp = Tempfile.open('options.pro')
|
25
|
+
@options.each do |option|
|
26
|
+
tmp.puts(option)
|
27
|
+
end
|
28
|
+
tmp.close
|
29
|
+
|
30
|
+
Execute.new do |e|
|
31
|
+
e.jar = ENV['PROGUARD_HOME'] + '/lib/proguard.jar'
|
32
|
+
e.args = "@#{tmp.path}"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def method_missing(msg, *args)
|
37
|
+
option = msg.to_s.gsub(/=/, '')
|
38
|
+
@options << "-#{option} #{args}"
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -4,19 +4,18 @@ module Filament::JavaME::Mixins
|
|
4
4
|
module LibraryMixin
|
5
5
|
include Java::Mixins::JavaMixin
|
6
6
|
|
7
|
+
attr_accessor2 :obfuscate
|
8
|
+
|
7
9
|
attr_writer :package_deps
|
8
10
|
attr_reader :srcs, :resources, :manifest, :platform, :cldc_version
|
9
11
|
|
10
|
-
def jar_path
|
11
|
-
return "#{output_dir}/#{@name}.jar"
|
12
|
-
end
|
13
|
-
|
14
12
|
def init_library
|
15
13
|
init_java
|
16
14
|
@srcs = FileList2.new
|
17
15
|
@resources = FileList2.new
|
18
16
|
@manifest = nil
|
19
17
|
@package_deps = false
|
18
|
+
@obfuscate = false
|
20
19
|
@platform = JavaME::Tools.tags_for($target_platform)
|
21
20
|
@cldc_version = JavaME::Tools.cldc_version_for($target_platform)
|
22
21
|
@bootclasspath = JavaME::Tools.classpath_for($target_platform)
|
@@ -51,10 +50,17 @@ module Filament::JavaME::Mixins
|
|
51
50
|
end
|
52
51
|
end
|
53
52
|
|
53
|
+
def jar_path
|
54
|
+
return "#{output_dir}/#{@name}.jar"
|
55
|
+
end
|
56
|
+
|
54
57
|
def define_library(target)
|
55
58
|
compiled_dir = directory(:compiled)
|
59
|
+
obfuscated_dir = directory(:obfuscated)
|
56
60
|
preverified_dir = directory(:preverified)
|
57
61
|
package_dir = directory(:package)
|
62
|
+
proguard_dir = directory(:proguard)
|
63
|
+
proguard_preverified_dir = directory(:proguard_preverified)
|
58
64
|
|
59
65
|
cp = classpath(target)
|
60
66
|
# prune empty entries from src
|
@@ -92,7 +98,7 @@ module Filament::JavaME::Mixins
|
|
92
98
|
end
|
93
99
|
|
94
100
|
# preverify to the preverified directory
|
95
|
-
JavaME::Tools
|
101
|
+
JavaME::Tools::preverify(compiled_dir, preverified_dir) do |j|
|
96
102
|
j.cldc_version = @cldc_version
|
97
103
|
j.classpath = cp + @bootclasspath
|
98
104
|
end
|
@@ -106,7 +112,7 @@ module Filament::JavaME::Mixins
|
|
106
112
|
package_files.each do |f|
|
107
113
|
p = Pathname.new(f)
|
108
114
|
|
109
|
-
if p.extname ==
|
115
|
+
if p.extname == '.jar'
|
110
116
|
Java::Tools::Jar.extract(f, package_dir)
|
111
117
|
else
|
112
118
|
cp_r_if(f, package_dir) { |p| !(p =~ /\.svn$/) }
|
@@ -117,14 +123,45 @@ module Filament::JavaME::Mixins
|
|
117
123
|
exclude_files = FileList.new
|
118
124
|
exclude_files.clear_exclude
|
119
125
|
exclude_files.add("#{package_dir}/META-INF")
|
120
|
-
exclude_files.add("#{package_dir}/**/.svn")
|
121
126
|
|
122
127
|
exclude_files.each do |file|
|
123
128
|
rm_rf(file)
|
124
129
|
end
|
125
130
|
|
126
|
-
|
127
|
-
|
131
|
+
# obfuscate, if necessary
|
132
|
+
if @obfuscate
|
133
|
+
Java::Tools::proguard(package_dir, proguard_dir) do |o|
|
134
|
+
(@classpath + @bootclasspath).each do |libraryjar|
|
135
|
+
o.libraryjars libraryjar
|
136
|
+
end
|
137
|
+
|
138
|
+
target.flattened_deps.each do |dep|
|
139
|
+
b = dep[:proguard]
|
140
|
+
b.call(o) unless b.nil?
|
141
|
+
end
|
142
|
+
|
143
|
+
o.defaultpackage "''"
|
144
|
+
o.dontusemixedcaseclassnames
|
145
|
+
o.allowaccessmodification
|
146
|
+
o.keep 'public class * extends javax.microedition.midlet.MIDlet'
|
147
|
+
end
|
148
|
+
|
149
|
+
FileList.new("#{proguard_dir}/*").each do |f|
|
150
|
+
cp_r_if(f, proguard_preverified_dir) { |p| !(p =~ /\.class$/) }
|
151
|
+
end
|
152
|
+
|
153
|
+
JavaME::Tools::preverify(proguard_dir, proguard_preverified_dir) do |j|
|
154
|
+
j.cldc_version = @cldc_version
|
155
|
+
j.classpath = cp + @bootclasspath
|
156
|
+
end
|
157
|
+
|
158
|
+
Java::Tools::Jar.new(jar_path, FileList.new(proguard_preverified_dir)) do |jar|
|
159
|
+
jar.manifest = @manifest
|
160
|
+
end
|
161
|
+
else
|
162
|
+
Java::Tools::Jar.new(jar_path, FileList.new(package_dir)) do |jar|
|
163
|
+
jar.manifest = @manifest
|
164
|
+
end
|
128
165
|
end
|
129
166
|
end
|
130
167
|
|
@@ -1,22 +1,5 @@
|
|
1
1
|
require 'filament/javame/mixins/library_mixin'
|
2
2
|
|
3
|
-
class Module
|
4
|
-
def attr_accessor2(*symbols)
|
5
|
-
# attr_writer(*symbols)
|
6
|
-
symbols.each do |sym|
|
7
|
-
attr_sym = "@#{sym.to_s}".to_sym
|
8
|
-
define_method(sym) do |*val|
|
9
|
-
if val.empty?
|
10
|
-
return instance_variable_get(attr_sym)
|
11
|
-
else
|
12
|
-
return instance_variable_set(attr_sym, val.first)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
|
20
3
|
module Filament::JavaME::Mixins
|
21
4
|
module SuiteMixin
|
22
5
|
include JavaME::Mixins::LibraryMixin
|
@@ -40,6 +23,7 @@ module Filament::JavaME::Mixins
|
|
40
23
|
init_library
|
41
24
|
@descriptor_config = Proc.new {}
|
42
25
|
@package_deps = true
|
26
|
+
@obfuscate = true # TODO should be based on $build_type
|
43
27
|
@defaultmidlet_class = nil
|
44
28
|
@midlets = []
|
45
29
|
|
@@ -63,10 +47,15 @@ module Filament::JavaME::Mixins
|
|
63
47
|
def define_jad(target)
|
64
48
|
# create a list for imported jad configs
|
65
49
|
configs = []
|
50
|
+
|
51
|
+
# start with this target
|
52
|
+
config = target[:jad_config]
|
53
|
+
configs << config unless config.nil?
|
54
|
+
|
66
55
|
target.flattened_deps.each do |dep|
|
67
56
|
# ask each dep for its contribution
|
68
|
-
|
69
|
-
|
57
|
+
config = dep[:jad_config]
|
58
|
+
configs << config unless config.nil?
|
70
59
|
end
|
71
60
|
|
72
61
|
full_config = Proc.new do |d|
|
@@ -3,20 +3,9 @@ require 'filament/javame/tools/emulator'
|
|
3
3
|
|
4
4
|
module Filament::JavaME::Tools
|
5
5
|
module MppSdk
|
6
|
-
def self.home
|
7
|
-
mpp_home_env = ENV['MPP_SDK_HOME']
|
8
|
-
|
9
|
-
return mpp_home_env unless mpp_home_env.nil?
|
10
|
-
|
11
|
-
base_dir = "#{$workspace.realpath}/vendor/applications/mpp-sdk"
|
12
|
-
version = Pathname.new("#{base_dir}/VERSION").read.chomp
|
13
|
-
|
14
|
-
return "#{base_dir}/#{version}"
|
15
|
-
end
|
16
|
-
|
17
6
|
class MppSdkEmulator < Emulator
|
18
7
|
def run
|
19
|
-
cd
|
8
|
+
cd ENV['MPP_SDK_HOME'] do |d|
|
20
9
|
c = "java -jar player.jar #{@jad_path}"
|
21
10
|
sys c
|
22
11
|
end
|
@@ -27,7 +16,7 @@ module Filament::JavaME::Tools
|
|
27
16
|
def preverify
|
28
17
|
raise "MppSdkPreverifier only works on darwin" unless darwin?
|
29
18
|
|
30
|
-
c = "
|
19
|
+
c = ENV['MPP_SDK_HOME'] + "/osx/preverify/preverify"
|
31
20
|
c << " -classpath #{join_paths(@classpath)}" unless @classpath.empty?
|
32
21
|
c << " -d #{fix_paths(@output_dir)}"
|
33
22
|
c << " -cldc1.0" if @cldc_version == 1.0
|
@@ -4,19 +4,8 @@ require 'filament/javame/tools/preverifier'
|
|
4
4
|
|
5
5
|
module Filament::JavaME::Tools
|
6
6
|
module Wtk
|
7
|
-
def self.home
|
8
|
-
wtk_home_env = ENV['WTK_HOME']
|
9
|
-
|
10
|
-
return wtk_home_env unless wtk_home_env.nil?
|
11
|
-
|
12
|
-
wtk_base = "#{$workspace.realpath}/vendor/applications/wtk"
|
13
|
-
|
14
|
-
return "#{wtk_base}/windows/2.3" if windows?
|
15
|
-
return "#{wtk_base}/linux/2.2"
|
16
|
-
end
|
17
|
-
|
18
7
|
def self.bin(path=nil)
|
19
|
-
wtk_bin =
|
8
|
+
wtk_bin = ENV['WTK_HOME'] + '/bin'
|
20
9
|
return wtk_bin if path.nil?
|
21
10
|
return to_exec_path("#{wtk_bin}/#{path}")
|
22
11
|
end
|
@@ -57,4 +46,4 @@ module Filament::JavaME::Tools
|
|
57
46
|
end
|
58
47
|
end
|
59
48
|
end
|
60
|
-
end
|
49
|
+
end
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11
|
|
3
3
|
specification_version: 1
|
4
4
|
name: filament
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.1.
|
7
|
-
date: 2006-03-
|
6
|
+
version: 0.1.1
|
7
|
+
date: 2006-03-16 00:00:00 -05:00
|
8
8
|
summary: A flexible dependency-based build platform based on Rake
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -81,6 +81,7 @@ files:
|
|
81
81
|
- plugins/01java/lib/filament/java/tools/compile.rb
|
82
82
|
- plugins/01java/lib/filament/java/tools/execute.rb
|
83
83
|
- plugins/01java/lib/filament/java/tools/jar.rb
|
84
|
+
- plugins/01java/lib/filament/java/tools/proguard.rb
|
84
85
|
- plugins/02javame/lib
|
85
86
|
- plugins/02javame/lib/filament
|
86
87
|
- plugins/02javame/lib/init.rb
|