amalgalite 1.6.3-x86-mingw32 → 1.8.0-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.
@@ -319,6 +319,46 @@ struct sqlite3_api_routines {
319
319
  void(*xDestroy)(void*));
320
320
  /* Version 3.26.0 and later */
321
321
  const char *(*normalized_sql)(sqlite3_stmt*);
322
+ /* Version 3.28.0 and later */
323
+ int (*stmt_isexplain)(sqlite3_stmt*);
324
+ int (*value_frombind)(sqlite3_value*);
325
+ /* Version 3.30.0 and later */
326
+ int (*drop_modules)(sqlite3*,const char**);
327
+ /* Version 3.31.0 and later */
328
+ sqlite3_int64 (*hard_heap_limit64)(sqlite3_int64);
329
+ const char *(*uri_key)(const char*,int);
330
+ const char *(*filename_database)(const char*);
331
+ const char *(*filename_journal)(const char*);
332
+ const char *(*filename_wal)(const char*);
333
+ /* Version 3.32.0 and later */
334
+ const char *(*create_filename)(const char*,const char*,const char*,
335
+ int,const char**);
336
+ void (*free_filename)(const char*);
337
+ sqlite3_file *(*database_file_object)(const char*);
338
+ /* Version 3.34.0 and later */
339
+ int (*txn_state)(sqlite3*,const char*);
340
+ /* Version 3.36.1 and later */
341
+ sqlite3_int64 (*changes64)(sqlite3*);
342
+ sqlite3_int64 (*total_changes64)(sqlite3*);
343
+ /* Version 3.37.0 and later */
344
+ int (*autovacuum_pages)(sqlite3*,
345
+ unsigned int(*)(void*,const char*,unsigned int,unsigned int,unsigned int),
346
+ void*, void(*)(void*));
347
+ /* Version 3.38.0 and later */
348
+ int (*error_offset)(sqlite3*);
349
+ int (*vtab_rhs_value)(sqlite3_index_info*,int,sqlite3_value**);
350
+ int (*vtab_distinct)(sqlite3_index_info*);
351
+ int (*vtab_in)(sqlite3_index_info*,int,int);
352
+ int (*vtab_in_first)(sqlite3_value*,sqlite3_value**);
353
+ int (*vtab_in_next)(sqlite3_value*,sqlite3_value**);
354
+ /* Version 3.39.0 and later */
355
+ int (*deserialize)(sqlite3*,const char*,unsigned char*,
356
+ sqlite3_int64,sqlite3_int64,unsigned);
357
+ unsigned char *(*serialize)(sqlite3*,const char *,sqlite3_int64*,
358
+ unsigned int);
359
+ const char *(*db_name)(sqlite3*,int);
360
+ /* Version 3.40.0 and later */
361
+ int (*value_encoding)(sqlite3_value*);
322
362
  };
323
363
 
324
364
  /*
@@ -608,6 +648,43 @@ typedef int (*sqlite3_loadext_entry)(
608
648
  #define sqlite3_create_window_function sqlite3_api->create_window_function
609
649
  /* Version 3.26.0 and later */
610
650
  #define sqlite3_normalized_sql sqlite3_api->normalized_sql
651
+ /* Version 3.28.0 and later */
652
+ #define sqlite3_stmt_isexplain sqlite3_api->stmt_isexplain
653
+ #define sqlite3_value_frombind sqlite3_api->value_frombind
654
+ /* Version 3.30.0 and later */
655
+ #define sqlite3_drop_modules sqlite3_api->drop_modules
656
+ /* Version 3.31.0 and later */
657
+ #define sqlite3_hard_heap_limit64 sqlite3_api->hard_heap_limit64
658
+ #define sqlite3_uri_key sqlite3_api->uri_key
659
+ #define sqlite3_filename_database sqlite3_api->filename_database
660
+ #define sqlite3_filename_journal sqlite3_api->filename_journal
661
+ #define sqlite3_filename_wal sqlite3_api->filename_wal
662
+ /* Version 3.32.0 and later */
663
+ #define sqlite3_create_filename sqlite3_api->create_filename
664
+ #define sqlite3_free_filename sqlite3_api->free_filename
665
+ #define sqlite3_database_file_object sqlite3_api->database_file_object
666
+ /* Version 3.34.0 and later */
667
+ #define sqlite3_txn_state sqlite3_api->txn_state
668
+ /* Version 3.36.1 and later */
669
+ #define sqlite3_changes64 sqlite3_api->changes64
670
+ #define sqlite3_total_changes64 sqlite3_api->total_changes64
671
+ /* Version 3.37.0 and later */
672
+ #define sqlite3_autovacuum_pages sqlite3_api->autovacuum_pages
673
+ /* Version 3.38.0 and later */
674
+ #define sqlite3_error_offset sqlite3_api->error_offset
675
+ #define sqlite3_vtab_rhs_value sqlite3_api->vtab_rhs_value
676
+ #define sqlite3_vtab_distinct sqlite3_api->vtab_distinct
677
+ #define sqlite3_vtab_in sqlite3_api->vtab_in
678
+ #define sqlite3_vtab_in_first sqlite3_api->vtab_in_first
679
+ #define sqlite3_vtab_in_next sqlite3_api->vtab_in_next
680
+ /* Version 3.39.0 and later */
681
+ #ifndef SQLITE_OMIT_DESERIALIZE
682
+ #define sqlite3_deserialize sqlite3_api->deserialize
683
+ #define sqlite3_serialize sqlite3_api->serialize
684
+ #endif
685
+ #define sqlite3_db_name sqlite3_api->db_name
686
+ /* Version 3.40.0 and later */
687
+ #define sqlite3_value_encoding sqlite3_api->value_encoding
611
688
  #endif /* !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION) */
612
689
 
613
690
  #if !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION)
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -13,6 +13,7 @@ module Amalgalite
13
13
  # implementation you must:
14
14
  #
15
15
  # * implement _initalize_ with 0 arguments
16
+ # * call super() in your _initialize_ method
16
17
  # * set the @arity data member
17
18
  # * set the @name data member
18
19
  # * implement _step_ with arity of +@arity+
@@ -25,6 +26,7 @@ module Amalgalite
25
26
  # attr_accessor :words
26
27
  #
27
28
  # def initialize
29
+ # super
28
30
  # @name = 'unique_word_count'
29
31
  # @arity = 1
30
32
  # @words = Hash.new { |h,k| h[k] = 0 }
@@ -50,6 +52,10 @@ module Amalgalite
50
52
  # The arity of the SQL function
51
53
  attr_accessor :arity
52
54
 
55
+ def initialize
56
+ @_exception = nil
57
+ end
58
+
53
59
  # finalize should return the final value of the aggregate function
54
60
  def finalize
55
61
  raise NotImplementedError, "Aggregate#finalize must be implemented"
@@ -15,14 +15,15 @@ module Amalgalite
15
15
  @database = database
16
16
  @table_name = table_name
17
17
  @table = @database.schema.tables[@table_name]
18
- @options = options
18
+ @options = options.dup
19
+ @encoding = options.delete("encoding") || "UTF-8"
19
20
  validate
20
21
  end
21
22
 
22
23
  def run
23
24
  @database.transaction do |db|
24
25
  db.prepare( insert_sql ) do |stmt|
25
- ::CSV.foreach( @csv_path, @options ) do |row|
26
+ ::CSV.foreach( @csv_path, "r:#{@encoding}", **@options ) do |row|
26
27
  stmt.execute( row )
27
28
  end
28
29
  end
@@ -339,7 +339,6 @@ module Amalgalite
339
339
  #
340
340
  def clear_taps!
341
341
  self.trace_tap = nil
342
- self.profile_tap = nil
343
342
  end
344
343
 
345
344
  ##
@@ -393,20 +392,19 @@ module Amalgalite
393
392
  #
394
393
  # db.trace_tap = nil
395
394
  #
396
- # This will unregistere the trace tap
395
+ # This will unregister the trace tap
397
396
  #
398
397
  #
399
398
  def trace_tap=( tap_obj )
400
399
 
401
400
  # unregister any previous trace tap
402
401
  #
403
- unless @trace_tap.nil?
402
+ if !@trace_tap.nil? then
404
403
  @trace_tap.trace( 'unregistered as trace tap' )
405
404
  @trace_tap = nil
406
405
  end
407
406
  return @trace_tap if tap_obj.nil?
408
407
 
409
-
410
408
  # wrap the tap if we need to
411
409
  #
412
410
  if tap_obj.respond_to?( 'trace' ) then
@@ -424,55 +422,6 @@ module Amalgalite
424
422
  @trace_tap.trace( 'registered as trace tap' )
425
423
  end
426
424
 
427
-
428
- ##
429
- # call-seq:
430
- # db.profile_tap = obj
431
- #
432
- # Register a profile tap.
433
- #
434
- # Registering a profile tap means that the +obj+ registered will have its
435
- # +profile+ method called with an Integer and a String parameter every time
436
- # a profile event happens. The Integer is the number of nanoseconds it took
437
- # for the String (SQL) to execute in wall-clock time.
438
- #
439
- # That is, every time a profile event happens in SQLite the following is
440
- # invoked:
441
- #
442
- # obj.profile( str, int )
443
- #
444
- # For instance:
445
- #
446
- # db.profile_tap = Amalgalite::ProfileTap.new( logger, 'debug' )
447
- #
448
- # This will register an instance of ProfileTap, which wraps an logger object.
449
- # On each +profile+ event the ProfileTap#profile method will be called
450
- # which in turn will call <tt>logger.debug<tt> with a formatted string containing
451
- # the String and Integer from the profile event.
452
- #
453
- # db.profile_tap = nil
454
- #
455
- # This will unregister the profile tap
456
- #
457
- #
458
- def profile_tap=( tap_obj )
459
-
460
- # unregister any previous profile tap
461
- unless @profile_tap.nil?
462
- @profile_tap.profile( 'unregistered as profile tap', 0.0 )
463
- @profile_tap = nil
464
- end
465
- return @profile_tap if tap_obj.nil?
466
-
467
- if tap_obj.respond_to?( 'profile' ) then
468
- @profile_tap = tap_obj
469
- else
470
- raise Amalgalite::Error, "#{tap_obj.class.name} cannot be used to tap. It has no 'profile' method"
471
- end
472
- @api.register_profile_tap( @profile_tap )
473
- @profile_tap.profile( 'registered as profile tap', 0.0 )
474
- end
475
-
476
425
  ##
477
426
  # call-seq:
478
427
  # db.type_map = DefaultMap.new
@@ -120,8 +120,8 @@ module Amalgalite
120
120
  # time information.
121
121
  #
122
122
  def profile( msg, time )
123
- unless sampler = @samplers[msg]
124
- msg = msg.gsub(/\s+/,' ')
123
+ msg = msg.gsub(/\s+/,' ')
124
+ unless sampler = @samplers[msg]
125
125
  sampler = @samplers[msg] = ProfileSampler.new( msg )
126
126
  end
127
127
  sampler.sample( time )
@@ -9,7 +9,7 @@ require 'stringio'
9
9
  module Amalgalite
10
10
  module Taps
11
11
  #
12
- # An IOTap is an easy way to send all top information to andy IO based
12
+ # An IOTap is an easy way to send all top information to any IO based
13
13
  # object. Both profile and trace tap information can be captured
14
14
  # This means you can send the events to STDOUT with:
15
15
  #
@@ -20,14 +20,17 @@ module Amalgalite
20
20
 
21
21
  attr_reader :profile_tap
22
22
  attr_reader :io
23
+ attr_reader :trace_count
23
24
 
24
25
  def initialize( io )
25
26
  @io = io
26
27
  @profile_tap = ProfileTap.new( self, 'output_profile_event' )
28
+ @trace_count = 0
27
29
  end
28
30
 
29
31
  def trace( msg )
30
- io.puts msg
32
+ @trace_count += 1
33
+ io.puts msg
31
34
  end
32
35
 
33
36
  # need a profile method, it routes through the profile tap which calls back
@@ -19,7 +19,7 @@ module Amalgalite
19
19
  attr_reader :delegate_method
20
20
 
21
21
  def initialize( wrapped_obj, send_to = 'trace' )
22
- unless wrapped_obj.respond_to?( send_to )
22
+ unless wrapped_obj.respond_to?( send_to )
23
23
  raise Amalgalite::Error, "#{wrapped_obj.class.name} does not respond to #{send_to.to_s} "
24
24
  end
25
25
 
@@ -4,5 +4,5 @@
4
4
  #++
5
5
 
6
6
  module Amalgalite
7
- VERSION = "1.6.3"
7
+ VERSION = "1.8.0"
8
8
  end
@@ -2,6 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  class AggregateTest1 < ::Amalgalite::Aggregate
4
4
  def initialize
5
+ super
5
6
  @name = 'atest1'
6
7
  @arity = -1
7
8
  @count = 0
@@ -96,6 +97,7 @@ describe "Aggregate SQL Functions" do
96
97
  it "handles an error being thrown during the step function" do
97
98
  class AggregateTest5 < AggregateTest1
98
99
  def initialize
100
+ super
99
101
  @name = "atest5"
100
102
  @arity = -1
101
103
  @count = 0
@@ -117,6 +119,7 @@ describe "Aggregate SQL Functions" do
117
119
  it "handles an error being thrown during the finalize function" do
118
120
  class AggregateTest6 < AggregateTest1
119
121
  def initialize
122
+ super
120
123
  @name = "atest6"
121
124
  @count = 0
122
125
  @arity = -1
@@ -131,6 +134,7 @@ describe "Aggregate SQL Functions" do
131
134
 
132
135
  it "handles an error being thrown during initialization in the C extension" do
133
136
  class AggregateTest7 < AggregateTest1
137
+ @called = false
134
138
  def self.called?
135
139
  if @called then
136
140
  raise "Initialization error!"
@@ -119,9 +119,13 @@ describe Amalgalite::Database do
119
119
  sql = "CREATE TABLE trace_test( x, y, z)"
120
120
  s = db.trace_tap = ::Amalgalite::Taps::StringIO.new
121
121
  db.execute( sql )
122
- db.trace_tap.string.should eql("registered as trace tap\n#{sql}\n")
122
+ escaped_sql= Regexp.quote(sql)
123
+ db.trace_tap.string.should match(/registered as trace tap/)
124
+ db.trace_tap.string.should match(/#{escaped_sql}/)
125
+ s.trace_count.should eql(2)
123
126
  db.trace_tap = nil
124
- s.string.should eql("registered as trace tap\n#{sql}\nunregistered as trace tap\n")
127
+ s.trace_count.should eql(3)
128
+ s.string.should match(/unregistered as trace tap/)
125
129
  end
126
130
 
127
131
  it "raises an exception if the wrong type of object is used for tracing" do
@@ -129,18 +133,13 @@ describe Amalgalite::Database do
129
133
  lambda { db.trace_tap = Object.new }.should raise_error(Amalgalite::Error)
130
134
  end
131
135
 
132
- it "raises an exception if the wrong type of object is used for profile" do
133
- db = Amalgalite::Database.new( SpecInfo.test_db )
134
- lambda { db.profile_tap = Object.new }.should raise_error(Amalgalite::Error)
135
- end
136
-
137
136
  it "profiles the execution of code" do
138
137
  db = Amalgalite::Database.new( SpecInfo.test_db )
139
- s = db.profile_tap = ::Amalgalite::Taps::StringIO.new
138
+ s = db.trace_tap = ::Amalgalite::Taps::StringIO.new
140
139
  db.execute_batch( @schema )
141
- db.profile_tap.samplers.size.should eql(6)
142
- db.profile_tap = nil
143
- s.string.should =~ /unregistered as profile tap/m
140
+ db.trace_tap.samplers.size.should eql(5)
141
+ db.trace_tap = nil
142
+ s.string.should =~ /unregistered as trace tap/
144
143
  end
145
144
 
146
145
  it "#execute yields each row when called with a block" do
@@ -167,13 +166,11 @@ describe Amalgalite::Database do
167
166
 
168
167
  it "can clear all registered taps" do
169
168
  db = Amalgalite::Database.new( SpecInfo.test_db )
170
- s = db.profile_tap = ::Amalgalite::Taps::StringIO.new
171
- db.trace_tap = s
169
+ s = db.trace_tap = ::Amalgalite::Taps::StringIO.new
172
170
  db.execute_batch( @schema )
173
- db.profile_tap.samplers.size.should eql(6)
171
+ db.trace_tap.samplers.size.should eql(5)
174
172
  db.clear_taps!
175
173
  s.string.should =~ /unregistered as trace tap/m
176
- s.string.should =~ /unregistered as profile tap/m
177
174
  end
178
175
 
179
176
  it "allows nested transactions even if SQLite under the covers does not" do
@@ -7,21 +7,21 @@ describe "Amalgalite::SQLite3::Version" do
7
7
  expect(Amalgalite::SQLite3::Version.to_s).to match( /\d+\.\d+\.\d+/ )
8
8
  expect(Amalgalite::SQLite3::Version.runtime_version).to match( /\d+\.\d+\.\d+/ )
9
9
 
10
- Amalgalite::SQLite3::Version.to_i.should eql(3026000)
11
- Amalgalite::SQLite3::Version.runtime_version_number.should eql(3026000)
10
+ Amalgalite::SQLite3::Version.to_i.should eql(3040001)
11
+ Amalgalite::SQLite3::Version.runtime_version_number.should eql(3040001)
12
12
 
13
13
  Amalgalite::SQLite3::Version::MAJOR.should eql(3)
14
- Amalgalite::SQLite3::Version::MINOR.should eql(26)
15
- Amalgalite::SQLite3::Version::RELEASE.should eql(0)
14
+ Amalgalite::SQLite3::Version::MINOR.should eql(40)
15
+ Amalgalite::SQLite3::Version::RELEASE.should eql(1)
16
16
  expect(Amalgalite::SQLite3::Version.to_a.size).to eql(3)
17
17
 
18
- Amalgalite::SQLite3::Version.compiled_version.should be == "3.26.0"
19
- Amalgalite::SQLite3::Version.compiled_version_number.should be == 3026000
18
+ Amalgalite::SQLite3::Version.compiled_version.should be == "3.40.1"
19
+ Amalgalite::SQLite3::Version.compiled_version_number.should be == 3040001
20
20
  Amalgalite::SQLite3::Version.compiled_matches_runtime?.should be == true
21
21
  end
22
22
 
23
23
  it "should have the sqlite3 source id" do
24
- source_id = "2018-12-01 12:34:55 bf8c1b2b7a5960c282e543b9c293686dccff272512d08865f4600fb58238b4f9"
24
+ source_id = "2022-12-28 14:03:47 df5c253c0b3dd24916e4ec7cf77d3db5294cc9fd45ae7b9c5e82ad8197f38a24"
25
25
  Amalgalite::SQLite3::Version.compiled_source_id.should be == source_id
26
26
  Amalgalite::SQLite3::Version.runtime_source_id.should be == source_id
27
27
  end
data/tasks/custom.rake CHANGED
@@ -63,7 +63,7 @@ namespace :util do
63
63
 
64
64
  require 'uri'
65
65
  require 'open-uri'
66
- require 'zip'
66
+ require 'archive/zip'
67
67
 
68
68
  parts = version.split(".")
69
69
  next_version = [ parts.shift.to_s ]
@@ -79,22 +79,21 @@ namespace :util do
79
79
  file = "tmp/#{File.basename( url.path ) }"
80
80
  FileUtils.mkdir "tmp" unless File.directory?( "tmp" )
81
81
  File.open( file, "wb+") do |f|
82
- open(url) do |input|
82
+ url.open do |input|
83
83
  f.write( input.read )
84
84
  end
85
85
  end
86
86
 
87
87
  puts "extracting..."
88
88
  upstream_files = %w[ sqlite3.h sqlite3.c sqlite3ext.h ]
89
- Zip::ZipInputStream.open( file ) do |io|
90
- loop do
91
- entry = io.get_next_entry
92
- break unless entry
93
- bname = File.basename( entry.name )
89
+ Archive::Zip.open( file ) do |archive|
90
+ archive.each do |entry|
91
+ next unless entry.file?
92
+ bname = File.basename( entry.zip_path)
94
93
  if upstream_files.include?( bname ) then
95
94
  dest_file = File.join( "ext", "amalgalite", "c", bname )
96
95
  puts "updating #{dest_file}"
97
- entry.extract( dest_file ) { true }
96
+ entry.extract(file_path: dest_file)
98
97
  end
99
98
  end
100
99
  end
data/tasks/default.rake CHANGED
@@ -39,7 +39,11 @@ begin
39
39
  require 'rspec/core/rake_task'
40
40
  RSpec::Core::RakeTask.new( :test ) do |t|
41
41
  t.ruby_opts = %w[ -w ]
42
- t.rspec_opts = %w[ --color --format documentation ]
42
+ t.rspec_opts = %w[
43
+ --color
44
+ --format documentation
45
+ --format RspecJunitFormatter --out tmp/report.xml
46
+ ]
43
47
  end
44
48
  task :test_requirements
45
49
  task :test => :test_requirements
@@ -157,7 +161,7 @@ namespace :fixme do
157
161
  end
158
162
 
159
163
  desc "See if the fixme tools are outdated"
160
- task :outdated => :release_check do
164
+ task :outdated do
161
165
  if fixme_up_to_date? then
162
166
  puts "Fixme files are up to date."
163
167
  else
@@ -168,7 +172,7 @@ namespace :fixme do
168
172
  end
169
173
 
170
174
  desc "Update outdated fixme files"
171
- task :update => :release_check do
175
+ task :update do
172
176
  if fixme_up_to_date? then
173
177
  puts "Fixme files are already up to date."
174
178
  else
@@ -199,7 +203,7 @@ task :gemspec do
199
203
  end
200
204
 
201
205
  # .rbc files from ruby 2.0
202
- CLOBBER << FileList["**/*.rbc"]
206
+ CLOBBER << "**/*.rbc"
203
207
 
204
208
  # The standard gem packaging task, everyone has it.
205
209
  require 'rubygems/package_task'
@@ -211,19 +215,19 @@ end
211
215
  # Release - the steps we go through to do a final release, this is pulled from
212
216
  # a compbination of mojombo's rakegem, hoe and hoe-git
213
217
  #
214
- # 1) make sure we are on the master branch
218
+ # 1) make sure we are on the main branch
215
219
  # 2) make sure there are no uncommitted items
216
220
  # 3) check the manifest and make sure all looks good
217
221
  # 4) build the gem
218
222
  # 5) do an empty commit to have the commit message of the version
219
223
  # 6) tag that commit as the version
220
- # 7) push master
224
+ # 7) push main
221
225
  # 8) push the tag
222
226
  # 7) pus the gem
223
227
  #------------------------------------------------------------------------------
224
228
  task :release_check do
225
- unless `git branch` =~ /^\* master$/
226
- abort "You must be on the master branch to release!"
229
+ unless `git branch` =~ /^\* main/
230
+ abort "You must be on the main branch to release!"
227
231
  end
228
232
  unless `git status` =~ /^nothing to commit/m
229
233
  abort "Nope, sorry, you have unfinished business"
@@ -234,7 +238,7 @@ desc "Create tag v#{This.version}, build and push #{This.platform_gemspec.full_n
234
238
  task :release => [ :release_check, 'manifest:check', :gem ] do
235
239
  sh "git commit --allow-empty -a -m 'Release #{This.version}'"
236
240
  sh "git tag -a -m 'v#{This.version}' v#{This.version}"
237
- sh "git push origin master"
241
+ sh "git push origin main"
238
242
  sh "git push origin v#{This.version}"
239
243
  sh "gem push pkg/#{This.platform_gemspec.full_name}.gem"
240
244
  end
data/tasks/extension.rake CHANGED
@@ -6,27 +6,17 @@
6
6
  # in your top level rakefile
7
7
  begin
8
8
  require 'rake/extensiontask'
9
- require 'rake/javaextensiontask'
9
+ Rake::ExtensionTask.new( This.name ) do |ext|
10
+ ext.ext_dir = File.join( 'ext', This.name, "c" )
11
+ ext.lib_dir = File.join( 'lib', This.name )
12
+ ext.gem_spec = This.ruby_gemspec
10
13
 
11
- if RUBY_PLATFORM == "java" then
12
-
13
- Rake::JavaExtensionTask.new( This.name) do |ext|
14
- ext.ext_dir = File.join( 'ext', This.name, "java" )
15
- ext.lib_dir = File.join( 'lib', This.name )
16
- ext.gem_spec = This.java_gemspec
17
- end
18
-
19
- else
20
-
21
- Rake::ExtensionTask.new( This.name ) do |ext|
22
- ext.ext_dir = File.join( 'ext', This.name, "c" )
23
- ext.lib_dir = File.join( 'lib', This.name )
24
- ext.gem_spec = This.ruby_gemspec
25
-
26
- ext.cross_compile = true # enable cross compilation (requires cross compile toolchain)
27
- ext.cross_platform = %w[x86-mingw32 x64-mingw32] # forces the Windows platform instead of the default one
28
- # configure options only for cross compile
29
- end
14
+ ext.cross_compile = true # enable cross compilation (requires cross compile toolchain)
15
+ ext.cross_platform = %w[
16
+ x86-mingw32
17
+ x64-mingw-ucrt
18
+ x64-mingw32
19
+ ]
30
20
  end
31
21
 
32
22
  task :test_requirements => :compile
@@ -34,5 +24,5 @@ rescue LoadError
34
24
  This.task_warning( 'extension' )
35
25
  end
36
26
 
37
- CLOBBER << FileList["lib/**/*.{jar,so,bundle}"]
38
- CLOBBER << FileList["lib/#{This.name}/{1,2}.*/"]
27
+ CLOBBER << "lib/**/*.{jar,so,bundle}"
28
+ CLOBBER << "lib/#{This.name}/{1,2,3}.*/"
data/tasks/this.rb CHANGED
@@ -25,10 +25,10 @@ class ThisProject
25
25
  #
26
26
  # Yields self
27
27
  def initialize(&block)
28
- @exclude_from_manifest = Regexp.union(/\.(git|DS_Store|ruby-version)/,
29
- /^(doc|coverage|pkg|tmp|.semaphore|Gemfile(\.lock)?)/,
28
+ @exclude_from_manifest = Regexp.union(/\.(git|DS_Store|semaphore)/,
29
+ /^(doc|coverage|pkg|tmp|Gemfile(\.lock)?)/,
30
30
  /^[^\/]+\.gemspec/,
31
- /\.(swp|jar|bundle|so|rvmrc|travis.yml|byebug_history)$/,
31
+ /\.(swp|jar|bundle|so|rvmrc|travis.yml|byebug_history|fossa.yml|ruby-version)$/,
32
32
  /~$/)
33
33
  @gemspecs = Hash.new
34
34
  yield self if block_given?
@@ -135,7 +135,7 @@ class ThisProject
135
135
  spec.homepage = homepage
136
136
 
137
137
  spec.summary = summary
138
- spec.description = description
138
+ spec.description = summary
139
139
  spec.license = license
140
140
 
141
141
  spec.files = manifest
@@ -185,7 +185,7 @@ class ThisProject
185
185
 
186
186
  # Internal: Return the summary text from the README
187
187
  def summary
188
- description_section.first
188
+ description_section.first.gsub(/\s+/, ' ')
189
189
  end
190
190
 
191
191
  # Internal: Return the full description text from the README