Mxx_ru 1.6.6 → 1.6.7.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 41c054d191474b23162b43e95280b56fb8cf543a
4
- data.tar.gz: 66d35e45eae73922b7f5ceda48d3963d67fc9059
3
+ metadata.gz: b65c551e624ecad29a513d7af93989985acb4455
4
+ data.tar.gz: ce616be948582f09e650fa28feeb76dc54035914
5
5
  SHA512:
6
- metadata.gz: 83af9a9bddc72971b8a80eac406dc66fc04d4a6d8324648c1329bb3bd38e1c028a42dd3617e2baff32661fd1e3093bda5316e980803197251f5fc8138376d2c3
7
- data.tar.gz: 8dc6ca2b069e2172623545c8f7de9d6d0dd3006fee31d08bba31b4bd9256e08d2d28378920c78d765fd18c00b681260f9abf247122e74691c79ce667d6829cff
6
+ metadata.gz: c454658a0f9b740e0da247913482674c2cc83f50b9179afc10274fc403c959b7b02192d7c9659be94dfb6f9251fd5654e72e4f4216c11b0e759c10fd819f04b8
7
+ data.tar.gz: fbedcdc011c11cfd9f244807ca3b7c7c76edd012c16146475a7a4febdc4a55a5a4e001160f37381d457b1d9139bba549611c74a120298fd40b6ac16d83bb59cb
data/COPYING CHANGED
@@ -1,6 +1,6 @@
1
1
  Copyright (c) 1996-2004, Yauheni Akhotnikau
2
2
  Copyright (c) 2004-2006, JSC Intervale
3
- Copyright (c) 2006-2015 The Mxx_ru Project
3
+ Copyright (c) 2006-2016, The Mxx_ru Project
4
4
  All rights reserved.
5
5
 
6
6
  Redistribution and use in source and binary forms, with or without modification,
data/NEWS CHANGED
@@ -1,5 +1,13 @@
1
1
  Changes in Mxx_ru
2
2
 
3
+ 1.6.7 version (2016.03.04)
4
+
5
+ mxx_ru/externals.rb added (with git_externals, svn_externals and hg_externals).
6
+
7
+ 1.6.6 version (2015.08.01)
8
+
9
+ Support for VC++14.0 added.
10
+
3
11
  1.6.5 version (2015.04.10)
4
12
 
5
13
  Bugfix release (fix for compiler flags for forcing C++14 mode).
data/README CHANGED
@@ -2,7 +2,7 @@ Copyright (c) 1996-2005, Yauheni Akhotnikau
2
2
 
3
3
  Copyright (c) 2004-2006, JSC Intervale
4
4
 
5
- Copyright (c) 2006-2015 The Mxx_ru Project
5
+ Copyright (c) 2006-2016, The Mxx_ru Project
6
6
 
7
7
  All rights reserved.
8
8
 
@@ -0,0 +1,289 @@
1
+ require 'rake'
2
+ require 'rake/tasklib'
3
+
4
+ module MxxRu
5
+
6
+ module Externals
7
+
8
+ module ExternalBasics
9
+ EXTERNALS_STORAGE_DIR = '.externals'
10
+
11
+ attr_reader :url
12
+
13
+ attr_reader :paths
14
+
15
+ attr_reader :name
16
+
17
+ def url(value)
18
+ @url = value
19
+ end
20
+
21
+ alias :url= :url
22
+
23
+ def map_dir(value)
24
+ raise "map_dir() value must be a Hash" unless value.is_a?(Hash)
25
+
26
+ @paths.merge!(value)
27
+ end
28
+
29
+ alias :map :map_dir
30
+
31
+ def map_file(value)
32
+ raise "map() value must be a Hash" unless value.is_a?(Hash)
33
+
34
+ @files.merge!(value)
35
+ end
36
+
37
+ def option(*values)
38
+ @options.push(*values)
39
+ end
40
+
41
+ private
42
+
43
+ def defaults(name)
44
+ @name = name
45
+ @remove_task_name = "#{@name}:remove"
46
+ @reget_task_name = "#{@name}:reget"
47
+ @paths = {}
48
+ @files = {}
49
+ @options = []
50
+ @verbose = Rake.verbose
51
+ end
52
+
53
+ def fileop_options
54
+ { :verbose => @verbose }
55
+ end
56
+
57
+ def rm_dir_if_exists(dir_name)
58
+ rm_r(dir_name, fileop_options) if Dir.exists?(dir_name)
59
+ end
60
+
61
+ def rm_directories(dirs)
62
+ dirs.each { |d| rm_dir_if_exists(d) }
63
+ end
64
+
65
+ def rm_file_if_exists(file_name)
66
+ rm(file_name, fileop_options) if File.exists?(file_name)
67
+ end
68
+
69
+ def rm_files(files)
70
+ files.each { |f| rm_file_if_exists(f) }
71
+ end
72
+
73
+ def ensure_basics_correctness(name)
74
+ raise "#{name}: url not specified" unless @url
75
+ raise "#{name}: path or file map must be specified" if @paths.empty? and @files.empty?
76
+ end
77
+
78
+ def make_name(prefix, suffix)
79
+ prefix.to_s + suffix
80
+ end
81
+
82
+ def subdir_name(subdir)
83
+ File.join(EXTERNALS_STORAGE_DIR, subdir)
84
+ end
85
+
86
+ def make_tmp_name(*prefixes)
87
+ "#{prefixes.join('.')}.#{Process.pid}.#{Thread.current.object_id}"
88
+ end
89
+
90
+ def add_options(receiver)
91
+ receiver.push(*@options)
92
+ end
93
+
94
+ def define(src_type, &exporter)
95
+ ensure_basics_correctness(@name)
96
+
97
+ ext_prj_sources_dir, dir_subtargets, file_subtargets = define_basic_task(src_type, &exporter)
98
+
99
+ define_remove_task(ext_prj_sources_dir, dir_subtargets, file_subtargets)
100
+ define_reget_task(ext_prj_sources_dir, dir_subtargets, file_subtargets)
101
+ end
102
+
103
+ def define_basic_task(src_type, &exporter)
104
+ ext_prj_sources_dir = subdir_name(@name.to_s)
105
+
106
+ directory EXTERNALS_STORAGE_DIR
107
+
108
+ dir_subtargets = []
109
+ @paths.each do |src, dst|
110
+ last_item = File.split(src).last
111
+ actual_dst = File.join(dst, last_item)
112
+
113
+ directory dst
114
+
115
+ directory actual_dst => [ext_prj_sources_dir, dst] do
116
+ cp_r(File.join(ext_prj_sources_dir, src), actual_dst, fileop_options)
117
+ end
118
+ dir_subtargets << actual_dst
119
+ end
120
+
121
+ file_subtargets = []
122
+ @files.each do |src, dst|
123
+ dir_dep = File.split(dst).first
124
+ directory dir_dep
125
+
126
+ file dst => [ext_prj_sources_dir, dir_dep] do
127
+ cp(File.join(ext_prj_sources_dir, src), dst, fileop_options)
128
+ end
129
+ file_subtargets << dst
130
+ end
131
+
132
+ directory ext_prj_sources_dir => [EXTERNALS_STORAGE_DIR] do
133
+ # All old destinations must be removed because source code
134
+ # will be exported again.
135
+ rm_directories(dir_subtargets)
136
+ rm_files(file_subtargets)
137
+
138
+ ext_prj_sources_tmp_dir = subdir_name(make_tmp_name src_type, @name)
139
+ exporter.call(ext_prj_sources_tmp_dir)
140
+ mv(ext_prj_sources_tmp_dir, ext_prj_sources_dir, fileop_options)
141
+ end
142
+
143
+ desc "Get #{@name} external project"
144
+ task @name => [dir_subtargets, file_subtargets].flatten!
145
+
146
+ task default: @name
147
+
148
+ return ext_prj_sources_dir, dir_subtargets, file_subtargets
149
+ end
150
+
151
+ def define_remove_task(ext_prj_sources_dir, dir_subtargets, file_subtargets)
152
+ desc "Remove #{@name} external project"
153
+ task @remove_task_name do
154
+ rm_files(file_subtargets)
155
+ rm_directories(dir_subtargets)
156
+ rm_dir_if_exists(ext_prj_sources_dir)
157
+ end
158
+
159
+ task :remove => @remove_task_name
160
+ end
161
+
162
+ def define_reget_task(ext_prj_sources_dir, dir_subtargets, file_subtargets)
163
+ desc "Remove and get fresh #{@name} external project"
164
+ task @reget_task_name => [@remove_task_name, @name]
165
+
166
+ task :reget => @reget_task_name
167
+ end
168
+ end
169
+
170
+ class Svn < Rake::TaskLib
171
+ include ExternalBasics
172
+
173
+ def initialize(name)
174
+ defaults(name)
175
+ @with_externals = false
176
+
177
+ yield self if block_given?
178
+
179
+ define 'svn' do |tmp_dir|
180
+ sh_args = [ 'svn', 'export' ]
181
+
182
+ sh_args << '-r' << @rev.to_s if @rev
183
+ sh_args << '--ignore-externals' unless @with_externals
184
+ add_options(sh_args)
185
+
186
+ sh_args << @url << tmp_dir
187
+
188
+ sh *sh_args
189
+ end
190
+ end
191
+
192
+ attr_reader :rev
193
+ def rev(v); @rev = v; end
194
+ alias :rev= :rev
195
+
196
+ def with_externals
197
+ @with_externals = true
198
+ end
199
+ end
200
+
201
+ class Git < Rake::TaskLib
202
+ include ExternalBasics
203
+
204
+ def initialize(name)
205
+ defaults(name)
206
+ @unlimited_depth = false
207
+ @recursive = false
208
+
209
+ yield self if block_given?
210
+
211
+ define 'git' do |tmp_dir|
212
+ sh_args = ['git', 'clone']
213
+
214
+ sh_args << '--branch' << @tag.to_s if @tag
215
+ sh_args << '--depth' << '1' unless @unlimited_depth
216
+ sh_args << '--recursive' if @recursive
217
+ add_options(sh_args)
218
+
219
+ sh_args << @url << tmp_dir
220
+
221
+ sh *sh_args
222
+ end
223
+ end
224
+
225
+ attr_reader :tag
226
+ def tag(v); @tag = v; end
227
+ alias :tag= :tag
228
+
229
+ def unlimited_depth
230
+ @unlimited_depth = true
231
+ end
232
+
233
+ def recursive
234
+ @recursive = true
235
+ end
236
+ end
237
+
238
+ class Hg < Rake::TaskLib
239
+ include ExternalBasics
240
+
241
+ def initialize(name)
242
+ defaults(name)
243
+
244
+ yield self if block_given?
245
+
246
+ define 'hg' do |tmp_dir|
247
+ sh_args = ['hg', 'clone']
248
+
249
+ sh_args << '--updaterev' << @tag.to_s if @tag
250
+ add_options(sh_args)
251
+
252
+ sh_args << @url << tmp_dir
253
+
254
+ sh *sh_args
255
+ end
256
+ end
257
+
258
+ attr_reader :tag
259
+ def tag(v); @tag = v; end
260
+ alias :tag= :tag
261
+ end
262
+
263
+ end # module Externals
264
+
265
+ def MxxRu.svn_externals(name, &block)
266
+ Externals::Svn.new(name, &block)
267
+ end
268
+
269
+ def MxxRu.git_externals(name, &block)
270
+ Externals::Git.new(name, &block)
271
+ end
272
+
273
+ def MxxRu.hg_externals(name, &block)
274
+ Externals::Hg.new(name, &block)
275
+ end
276
+
277
+ end # module MxxRu
278
+
279
+ desc "Remove all external projects"
280
+ task :remove do
281
+ d = MxxRu::Externals::ExternalBasics::EXTERNALS_STORAGE_DIR
282
+ rm_r(d, :verbose => Rake.verbose) if Dir.exists?(d)
283
+ end
284
+
285
+ desc "Remove and get again all external projects"
286
+ task :reget
287
+
288
+ # vim:ts=2:sts=2:sw=2:expandtab
289
+
@@ -34,4 +34,4 @@
34
34
  #
35
35
  # puts 'Mxx_ru version is: ' + MXX_RU_VERSION
36
36
  #
37
- MXX_RU_VERSION = '1.6.6'
37
+ MXX_RU_VERSION = '1.6.7.1'
@@ -0,0 +1,7 @@
1
+ require 'mxx_ru/externals'
2
+
3
+ MxxRu::git_externals :asio do |ext|
4
+ ext.url 'https://github.com/chriskohlhoff/asio.git'
5
+ ext.tag 'asio-1-11-0'
6
+ ext.map 'asio' => 'dev'
7
+ end
@@ -0,0 +1,9 @@
1
+ require 'mxx_ru/externals'
2
+
3
+ MxxRu::hg_externals :eigen do |ext|
4
+ ext.url = 'https://bitbucket.org/eigen/eigen'
5
+ ext.tag = '3.2.5'
6
+ ext.map 'Eigen' => 'dev'
7
+ ext.map_file 'INSTALL' => 'INSTALL.eigen'
8
+ end
9
+
@@ -0,0 +1,17 @@
1
+ require 'mxx_ru/externals'
2
+
3
+ MxxRu::svn_externals :so_5 do |ext|
4
+ ext.url 'http://svn.code.sf.net/p/sobjectizer/repo/branches/so_5/5.5'
5
+ ext.option '-q'
6
+ ext.map 'dev/so_5' => 'dev'
7
+ ext.map 'dev/test/so_5' => 'dev/test'
8
+ ext.map_file 'README' => 'README.so_5'
9
+ end
10
+
11
+ MxxRu::svn_externals :socomm do |ext|
12
+ ext.url 'http://svn.code.sf.net/p/sobjectizer/repo/branches/so_comm_1/1.1'
13
+ ext.option '-q'
14
+ ext.rev 2290
15
+ ext.map 'dev/so_comm_1' => 'dev'
16
+ ext.map 'dev/test/so_comm_1' => 'dev/test'
17
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: Mxx_ru
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.6
4
+ version: 1.6.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - The Mxx_ru Project
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-26 00:00:00.000000000 Z
11
+ date: 2016-03-04 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: eao197@yahoo.com
@@ -118,6 +118,7 @@ files:
118
118
  - lib/mxx_ru/cpp/toolsets/vc_family.rb
119
119
  - lib/mxx_ru/environment_setup.rb
120
120
  - lib/mxx_ru/ex.rb
121
+ - lib/mxx_ru/externals.rb
121
122
  - lib/mxx_ru/generators/bin-unittest/g.rb
122
123
  - lib/mxx_ru/generators/bin-unittest/template.erb
123
124
  - lib/mxx_ru/generators/cpp-build-root/g.rb
@@ -213,6 +214,9 @@ files:
213
214
  - tests/darwin/bundle_target_type/my_test_bundle.c
214
215
  - tests/darwin/bundle_target_type/my_test_bundle.rb
215
216
  - tests/darwin/bundle_target_type/tc_normal_build.rb
217
+ - tests/externals/check_git.rb
218
+ - tests/externals/check_hg.rb
219
+ - tests/externals/check_svn.rb
216
220
  - tests/mxx_ru/binary_library/tc_binary_library.rb
217
221
  - tests/mxx_ru/binary_library/tc_binary_target_lib_methods.rb
218
222
  - tests/mxx_ru/change_default_value/ignoring_by_build_root/build.rb