fxruby 1.6.49-aarch64-mingw-ucrt → 1.6.50-aarch64-mingw-ucrt

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: aa62baf494da1984f2ee6f232b69b046c6e7459822e54961fba5c03d1ae3b679
4
- data.tar.gz: 0d22760078765bb482bd774ba43a6a7a53b52ba9ddbc00d07ed259ae392d2217
3
+ metadata.gz: 91adf0285afb0cbeb03c8904ecefc604c66c5275181eb3324801b9b7a35062a0
4
+ data.tar.gz: e05f90db661fda2392388046e3de50be761dbbcd620e5981f2fadb1a2b3394ae
5
5
  SHA512:
6
- metadata.gz: e488fb6e05808e74b3e9648deaabf0ca61620e08334c511a047a088cbd1a5efb72047ce2607fa4f68c73cbd65923f4b5ce73f5157c993c29f49ca19ac414d33c
7
- data.tar.gz: 34159478f2d2b37499c599bb2d4b8220777a765103e140fcaaa87be169b57eab7b015cae771a52993f880e1ce8e397cf45b38921b9f6c258e70eab3504c5c43f
6
+ metadata.gz: d61b92109751788d3e038ff86efe62fdcb1e2c6b685650a3fda19a61580564f5d62a35903dd381cacb36e40185bf3b9cb254a335b678df37696ff3dd74f4a5cb
7
+ data.tar.gz: 18b359554ec3c4e0077085078149416dd6b32eb2f4a4b906346e33d5c4ca1661b07dc2450763276c39b929b1b610f063b0803b50ccc33c4b298e6aba1f69af37
@@ -15,6 +15,7 @@ jobs:
15
15
  fail-fast: false
16
16
  matrix:
17
17
  include:
18
+ - platform: "aarch64-mingw-ucrt"
18
19
  - platform: "x64-mingw-ucrt"
19
20
  - platform: "x64-mingw32"
20
21
  - platform: "x86-mingw32"
@@ -23,7 +24,7 @@ jobs:
23
24
  - name: Set up Ruby
24
25
  uses: ruby/setup-ruby@v1
25
26
  with:
26
- ruby-version: "3.4"
27
+ ruby-version: "4.0"
27
28
  - run: bundle install
28
29
 
29
30
  - name: Build binary gem
@@ -42,14 +43,17 @@ jobs:
42
43
  fail-fast: false
43
44
  matrix:
44
45
  include:
46
+ - os: windows-11-arm
47
+ ruby: "4.0"
48
+ platform: "aarch64-mingw-ucrt"
45
49
  - os: windows-latest
46
- ruby: "3.4"
50
+ ruby: "4.0"
47
51
  platform: "x64-mingw-ucrt"
48
52
  - os: windows-latest
49
53
  ruby: "3.1.7-1"
50
54
  platform: "x86-mingw32"
51
55
  - os: windows-latest
52
- ruby: "2.7"
56
+ ruby: "3.0"
53
57
  platform: "x64-mingw32"
54
58
 
55
59
  runs-on: ${{ matrix.os }}
@@ -77,7 +81,6 @@ jobs:
77
81
  name: binary-gem-${{ matrix.platform }}
78
82
 
79
83
  - run: echo $env:PATH
80
- - run: gem update --system 3.3.26
81
84
  - run: bundle install
82
85
  - run: gem install --local fxruby-*${{ matrix.platform }}.gem --verbose
83
86
  - name: Run specs
@@ -17,13 +17,13 @@ jobs:
17
17
  - os: windows
18
18
  ruby: "head"
19
19
  - os: windows
20
- ruby: "2.7"
20
+ ruby: "3.2"
21
21
  - os: ubuntu
22
22
  ruby: "head"
23
23
  - os: ubuntu
24
- ruby: "3.4"
24
+ ruby: "4.0"
25
25
  - os: ubuntu
26
- ruby: "2.7"
26
+ ruby: "3.0"
27
27
  - os: macos
28
28
  ruby: "head"
29
29
 
@@ -37,7 +37,7 @@ jobs:
37
37
  ruby-version: ${{ matrix.ruby }} # passed to ruby/setup-ruby
38
38
  apt-get: "xpra xserver-xorg-video-dummy libxrandr-dev libfox-1.6-dev swig" # Ubuntu
39
39
  brew: "fox swig xquartz" # macOS
40
- mingw: "fox swig gcc" # Windows mingw / mswin /ucrt
40
+ mingw: "fox swig" # Windows mingw / mswin /ucrt
41
41
 
42
42
  - name: Print tool versions
43
43
  run: |
@@ -46,6 +46,11 @@ jobs:
46
46
  swig -version
47
47
  gem env
48
48
 
49
+ - name: MacOS Start XQuartz
50
+ if: matrix.os == 'macos'
51
+ run: |
52
+ open -a XQuartz
53
+
49
54
  - name: Bundle install
50
55
  run: bundle install
51
56
 
@@ -66,13 +71,6 @@ jobs:
66
71
  xpra --xvfb="Xorg +extension GLX -config `pwd`/test/dummy.xorg.conf -logfile ${HOME}/.xpra/xorg.log" start :9
67
72
  echo "DISPLAY=:9" >> $GITHUB_ENV
68
73
 
69
- - name: MacOS Start XQuartz
70
- if: matrix.os == 'macos'
71
- run: |
72
- open -a XQuartz
73
- # wait some seconds until XQuartz has started
74
- sleep 10
75
-
76
74
  - name: Run tests
77
75
  run: bundle exec rake test
78
76
 
data/Gemfile CHANGED
@@ -1,7 +1,7 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- # Specify your gem's runtime dependencies in fxruby.gemspec
4
- gemspec
3
+ # No fxruby gemspec, since "bundle package" fails on bundler-2.7+, if the extension isn't built
4
+ # gemspec
5
5
 
6
6
  # For some reason this is required in addition to the gemspec
7
7
  # when 'bundle config force_ruby_platform true' is active:
@@ -9,9 +9,9 @@ gem 'mini_portile2'
9
9
 
10
10
  group :development do
11
11
  gem 'rake-compiler', '~> 1.0'
12
- gem 'rake-compiler-dock', '~> 1.9.1'
12
+ gem 'rake-compiler-dock', '~> 1.11.0'
13
13
  gem 'yard', '~> 0.8'
14
- gem "bundler", ">= 1.12", "< 3.a"
14
+ gem "bundler", ">= 1.12", "< 5.a"
15
15
  gem "rake", "~> 13.0"
16
16
  end
17
17
 
data/History.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## 1.6.50 / 2026-01-02
2
+
3
+ * Add binary gem support for ruby-4.0.
4
+ * Drop support for ruby older than 3.0.
5
+ * Fix breaking some other gems (date_core.so) by shipped DLLs. #84
6
+ * Update to libpng-1.6.53, libjpeg-turbo-3.1.3, libtiff-4.7.1 for Windows binary gems.
7
+ * Some documentation improvements.
8
+
1
9
  ## 1.6.49 / 2025-07-14
2
10
 
3
11
  * Add compatibility to SWIG-4.3. Type of "NULL pointer" error changed in swig 4.3.0. It was ArgumentError before and is NullReferenceError now. #81
data/Rakefile CHANGED
@@ -132,6 +132,30 @@ ext_task = Rake::ExtensionTask.new("fox16_c", gem_spec) do |ext|
132
132
 
133
133
  spec.files += dlls.map{|dll| "ports/#{gemplat}/bin/#{dll}" }
134
134
 
135
+ # Bind the external DLLs per manifest to our fox16_c.so ,
136
+ # so that they aren't used by any other extension.
137
+ # Otherwise version dependent incompatibilities can break other gems.
138
+ manif_fname = "ports/#{gemplat}/bin/fxruby-assembly.manifest"
139
+ File.binwrite manif_fname, <<~EOT
140
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
141
+ <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
142
+ <assemblyIdentity type="win32" name="fxruby-assembly" version="1.0.0.0"></assemblyIdentity>
143
+
144
+ #{ dlls.map{|dll| %Q{<file name="#{dll}"/>} }.join }
145
+ </assembly>
146
+ EOT
147
+ spec.files += [manif_fname]
148
+
149
+ # Windows manifest files don't allow file paths but only file names.
150
+ # Therefore move our fox16_c.so into the bin directory
151
+ # and change to a ruby version dependent file name like "4_0_fox16_c.so".
152
+ exts, spec.files = spec.files.partition{|f| File.fnmatch("lib/?.?/fox16_c.so", f) }
153
+ spec.files += exts.map do |f|
154
+ new = "ports/#{gemplat}/bin/#{File.basename(File.dirname(f)).gsub(".","_")}_#{File.basename(f)}"
155
+ mv("tmp/#{gemplat}/stage/#{f}", new)
156
+ new
157
+ end
158
+
135
159
  unless ENV['FXRUBY_MINGW_DEBUG']
136
160
  dlls.each do |dll|
137
161
  task "ports/#{gemplat}/bin/#{dll}" do |t|
@@ -162,8 +186,9 @@ namespace :gem do
162
186
  RakeCompilerDock.sh <<-EOT, platform: plat
163
187
  sudo apt-get update &&
164
188
  sudo apt-get install -y yasm libtool m4 automake &&
165
- bundle --local --without=test &&
166
- rake native:#{plat} pkg/#{ext_task.gem_spec.full_name}-#{plat}.gem MAKE=\"nice make V=1 VERBOSE=1 -j `nproc`\" #{debug} RUBY_CC_VERSION=#{RakeCompilerDock.ruby_cc_version("~>2.7", "~>3.0")}
189
+ bundle config set without test &&
190
+ bundle install --local &&
191
+ rake native:#{plat} pkg/#{ext_task.gem_spec.full_name}-#{plat}.gem MAKE=\"nice make V=1 VERBOSE=1 -j `nproc`\" #{debug} RUBY_CC_VERSION=#{RakeCompilerDock.ruby_cc_version("~>4.0", "~>3.0")}
167
192
  EOT
168
193
  end
169
194
  end
data/appveyor.yml CHANGED
@@ -28,4 +28,4 @@ test_script:
28
28
  environment:
29
29
  matrix:
30
30
  - ruby_version: "head-x64"
31
- - ruby_version: "27"
31
+ - ruby_version: "32"
@@ -2010,4 +2010,18 @@ Init_fox16_c(void) {
2010
2010
 
2011
2011
  appSensitiveObjs=st_init_numtable();
2012
2012
  appSensitiveDCs=st_init_numtable();
2013
- }
2013
+ }
2014
+
2015
+ /* Define an additioal ruby version dependent init function.
2016
+ * It is used in the binary gem when loaded by
2017
+ * require "4_0_fox16_c"
2018
+ */
2019
+ #ifdef FXRUBY_INITFUNC
2020
+ extern "C" void
2021
+ #if defined _WIN32
2022
+ __declspec(dllexport)
2023
+ #endif
2024
+ FXRUBY_INITFUNC(void) {
2025
+ Init_fox16_c();
2026
+ }
2027
+ #endif
@@ -23,17 +23,17 @@ end
23
23
  LIBZ_VERSION = ENV['LIBZ_VERSION'] || '1.3.1'
24
24
  LIBZ_SOURCE_URI = "http://zlib.net/fossils/zlib-#{LIBZ_VERSION}.tar.gz"
25
25
 
26
- LIBPNG_VERSION = ENV['LIBPNG_VERSION'] || '1.6.50'
26
+ LIBPNG_VERSION = ENV['LIBPNG_VERSION'] || '1.6.53'
27
27
  # LIBPNG_SOURCE_URI = "http://prdownloads.sourceforge.net/libpng/libpng-#{LIBPNG_VERSION}.tar.gz"
28
28
  LIBPNG_SOURCE_URI = "https://netcologne.dl.sourceforge.net/project/libpng/libpng16/#{LIBPNG_VERSION}/libpng-#{LIBPNG_VERSION}.tar.xz"
29
29
 
30
30
  # LIBJPEG_VERSION = ENV['LIBJPEG_VERSION'] || '9b'
31
31
  # LIBJPEG_SOURCE_URI = "http://www.ijg.org/files/jpegsrc.v#{LIBJPEG_VERSION}.tar.gz"
32
32
 
33
- LIBJPEG_VERSION = ENV['LIBJPEG_VERSION'] || '3.1.1'
33
+ LIBJPEG_VERSION = ENV['LIBJPEG_VERSION'] || '3.1.3'
34
34
  LIBJPEG_SOURCE_URI = "https://github.com/libjpeg-turbo/libjpeg-turbo/releases/download/#{LIBJPEG_VERSION}/libjpeg-turbo-#{LIBJPEG_VERSION}.tar.gz"
35
35
 
36
- LIBTIFF_VERSION = ENV['LIBTIFF_VERSION'] || '4.7.0'
36
+ LIBTIFF_VERSION = ENV['LIBTIFF_VERSION'] || '4.7.1'
37
37
  LIBTIFF_SOURCE_URI = "http://download.osgeo.org/libtiff/tiff-#{LIBTIFF_VERSION}.tar.gz"
38
38
 
39
39
  LIBFOX_VERSION = ENV['LIBFOX_VERSION'] || '1.6.59'
@@ -240,11 +240,27 @@ def do_rake_compiler_setup
240
240
  FileUtils.cp `#{cmd}`.chomp, "#{libfox_recipe.path}/bin/", verbose: true
241
241
  end
242
242
 
243
+ # Compile a DLL manifest to be used in fox16_c.so
244
+ File.binwrite "fxruby_manifest.xml", <<~EOT
245
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
246
+ <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
247
+ <dependency>
248
+ <dependentAssembly>
249
+ <assemblyIdentity version="1.0.0.0" type="win32" name="fxruby-assembly" />
250
+ </dependentAssembly>
251
+ </dependency>
252
+ </assembly>
253
+ EOT
254
+ File.binwrite "fxruby_manifest.rc", "2 24 fxruby_manifest.xml"
255
+ system "#{RbConfig::CONFIG["WINDRES"]} --input fxruby_manifest.rc --output fxruby_manifest.res --output-format=coff"
256
+
243
257
  CONFIG['CXX'] = "#{libfox_recipe.host}-g++" # CXX setting must be prefixed for cross build
244
258
  CONFIG['CC'] += "\nCXX=#{CONFIG['CXX']}" # Hack CXX into Makefile for cross compilation
245
259
  CONFIG['LDSHARED'].gsub!('gcc', 'g++') # ensure C++ linker is used, so that libstdc++ is linked static
246
- $LDFLAGS += " -s" # remove symbol table informations from shared lib
260
+ $LDFLAGS += " -s fxruby_manifest.res" # remove symbol table informations from shared lib and add manifest
247
261
  $libs = append_library($libs, "fxscintilla")
262
+ major_minor = RUBY_VERSION[ /^(\d+\.\d+)/ ].gsub(".","_")
263
+ $CPPFLAGS += " -DFXRUBY_INITFUNC=Init_#{major_minor}_fox16_c"
248
264
 
249
265
  elsif RUBY_PLATFORM =~ /mingw/
250
266
  $CFLAGS = $CFLAGS + " -I/usr/local/include"
data/fxruby.gemspec CHANGED
@@ -50,7 +50,7 @@ Gem::Specification.new do |spec|
50
50
  spec.require_paths = ["lib"]
51
51
  spec.extensions = ["ext/fox16_c/extconf.rb"]
52
52
  spec.metadata['msys2_mingw_dependencies'] = 'fox'
53
- spec.required_ruby_version = [">= 2.7", "< 4"]
53
+ spec.required_ruby_version = ">= 2.7"
54
54
 
55
55
  spec.add_runtime_dependency 'mini_portile2', '~> 2.1'
56
56
 
data/lib/fox16/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Fox
2
2
  def Fox.fxrubyversion
3
- "1.6.49"
3
+ "1.6.50"
4
4
  end
5
5
  end
data/lib/fox16.rb CHANGED
@@ -6,24 +6,8 @@ rescue LoadError
6
6
  major_minor = RUBY_VERSION[ /^(\d+\.\d+)/ ] or
7
7
  raise "Oops, can't extract the major/minor version from #{RUBY_VERSION.dump}"
8
8
 
9
- add_dll_path = proc do |path, &block|
10
- begin
11
- require 'ruby_installer/runtime'
12
- RubyInstaller::Runtime.add_dll_directory(path, &block)
13
- rescue LoadError
14
- old_path = ENV['PATH']
15
- ENV['PATH'] = "#{path};#{old_path}"
16
- block.call
17
- ENV['PATH'] = old_path
18
- end
19
- end
20
-
21
9
  ruby_plat = RUBY_PLATFORM.gsub("i386", "x86")
22
- # Temporary add this directory for DLL search, so that bundled DLLs can be found.
23
- ports_bin = File.expand_path("../../ports/#{ruby_plat}/bin", __FILE__)
24
- add_dll_path.call(ports_bin) do
25
- require "#{major_minor}/fox16_c"
26
- end
10
+ require_relative "../ports/#{ruby_plat}/bin/#{major_minor.gsub(".","_")}_fox16_c"
27
11
  else
28
12
  raise
29
13
  end
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2
+ <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
3
+ <assemblyIdentity type="win32" name="fxruby-assembly" version="1.0.0.0"></assemblyIdentity>
4
+
5
+ <file name="libfxscintilla-25.dll"/><file name="libFOX-1.6-0.dll"/><file name="libjpeg-62.dll"/><file name="libpng16-16.dll"/><file name="libtiff-6.dll"/><file name="zlib1.dll"/>
6
+ </assembly>
Binary file
@@ -80,7 +80,10 @@ module Fox
80
80
  #
81
81
  # Populate the image with new pixel data of the same size or of a new size
82
82
  #
83
- # Pixel data is copied and IMAGE_OWNED option is set.
83
+ # Pixel data is copied when IMAGE_OWNED option is set or when provided as Array.
84
+ # Pixel data is used without copying when IMAGE_OWNED isn't set and provided as String.
85
+ # In that case the string must be writable and receives modifications to the image.
86
+ #
84
87
  # If called with +width+ and +height+, the size of the serverside representation
85
88
  # of the image, if it exists, is adjusted but the contents are not updated yet.
86
89
  # This can be done by calling render().
@@ -15,7 +15,7 @@ class TC_FXBMPImage < Fox::TestCase
15
15
 
16
16
  def test_image_from_pixel_data
17
17
  img = FXBMPImage.new app
18
- img.setPixels "rgbaRGBA", 0, 1, 2
18
+ img.setPixels +"rgbaRGBA", 0, 1, 2
19
19
  bmp_data = FXMemoryStream.open(FXStreamSave, nil) do |outfile|
20
20
  img.savePixels(outfile)
21
21
  outfile.takeBuffer
data/test/TC_FXImage.rb CHANGED
@@ -76,14 +76,14 @@ class TC_FXImage < Fox::TestCase
76
76
 
77
77
  def test_setPixels_string
78
78
  img = FXImage.new(app, nil, 0, 2, 1)
79
- img.pixels = "rgbaRGBA"
79
+ img.pixels = +"rgbaRGBA"
80
80
  assert_equal(0, img.options)
81
81
  assert_equal("rgbaRGBA", img.pixel_string)
82
82
  end
83
83
 
84
84
  def test_dataPtr
85
85
  img = FXImage.new(app, nil, 0, 2, 1)
86
- img.pixels = "rgbaRGBA"
86
+ img.pixels = +"rgbaRGBA"
87
87
  assert_equal(0, img.options)
88
88
  assert_equal("rgbaRGBA", Fiddle::Pointer.new(img.dataPtr)[0, 8])
89
89
  end
@@ -121,7 +121,7 @@ class TC_FXImage < Fox::TestCase
121
121
  end
122
122
 
123
123
  def image_with_non_owned_data
124
- FXImage.new(app, "rgbaRGBA", 0, 1, 2)
124
+ FXImage.new(app, +"rgbaRGBA", 0, 1, 2)
125
125
  end
126
126
 
127
127
  def test_create_with_non_owned_data
@@ -135,7 +135,7 @@ class TC_FXImage < Fox::TestCase
135
135
  end
136
136
 
137
137
  def set_non_owned_data(img)
138
- img.setPixels("rgbaRGBA", 0, 2, 1)
138
+ img.setPixels(+"rgbaRGBA", 0, 2, 1)
139
139
  end
140
140
 
141
141
  def test_set_pixel_with_non_owned_data
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fxruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.49
4
+ version: 1.6.50
5
5
  platform: aarch64-mingw-ucrt
6
6
  authors:
7
7
  - Lyle Johnson
8
8
  - Lars Kanis
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-07-14 00:00:00.000000000 Z
11
+ date: 1980-01-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mini_portile2
@@ -947,7 +947,6 @@ files:
947
947
  - ext/fox16_c/unregisterOwnedObjects.cpp
948
948
  - fxruby.gemspec
949
949
  - index.html
950
- - lib/3.4/fox16_c.so
951
950
  - lib/fox16.rb
952
951
  - lib/fox16/accel_table.rb
953
952
  - lib/fox16/aliases.rb
@@ -981,6 +980,9 @@ files:
981
980
  - lib/fox16/tkcompat.rb
982
981
  - lib/fox16/undolist.rb
983
982
  - lib/fox16/version.rb
983
+ - ports/aarch64-mingw-ucrt/bin/3_4_fox16_c.so
984
+ - ports/aarch64-mingw-ucrt/bin/4_0_fox16_c.so
985
+ - ports/aarch64-mingw-ucrt/bin/fxruby-assembly.manifest
984
986
  - ports/aarch64-mingw-ucrt/bin/libFOX-1.6-0.dll
985
987
  - ports/aarch64-mingw-ucrt/bin/libfxscintilla-25.dll
986
988
  - ports/aarch64-mingw-ucrt/bin/libjpeg-62.dll
@@ -1524,14 +1526,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
1524
1526
  version: '3.4'
1525
1527
  - - "<"
1526
1528
  - !ruby/object:Gem::Version
1527
- version: 3.5.dev
1529
+ version: 4.1.dev
1528
1530
  required_rubygems_version: !ruby/object:Gem::Requirement
1529
1531
  requirements:
1530
1532
  - - ">="
1531
1533
  - !ruby/object:Gem::Version
1532
1534
  version: '0'
1533
1535
  requirements: []
1534
- rubygems_version: 3.6.2
1536
+ rubygems_version: 4.0.3
1535
1537
  specification_version: 4
1536
1538
  summary: FXRuby is the Ruby binding to the FOX GUI toolkit.
1537
1539
  test_files: []