mingw-make 1.0.0-x64-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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 9706ca235794d928d5df706432b8fcc9f8ce1a5ff49607b39dd83c9c40e17795
4
+ data.tar.gz: fa576989d96e43aa0fc88b1b1fe759b5d3430e870c2d46b107db4d7076df1fb1
5
+ SHA512:
6
+ metadata.gz: 55111f155992ecf15b6e65157cdc89a184010d06c6a117dc94ed13980ad9583c3bc40c33aa96466f06f38a4bf937fd94aeb0e4cd5d254c3f048a0c4595b1c5b4
7
+ data.tar.gz: eb79299cd21d25ba0409a48af05ade2ba3fb8f087c458e75bd5064907406cf3c31aa3459f7f94a4e5e257a8d2e60686f0d9b6afb2a84e5ffb79724b963107464
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+ source 'https://rubygems.org'
3
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,14 @@
1
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
2
+ Version 2, December 2004
3
+
4
+ Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
5
+
6
+ Everyone is permitted to copy and distribute verbatim or modified
7
+ copies of this license document, and changing it is allowed as long
8
+ as the name is changed.
9
+
10
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
11
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
12
+
13
+ 0. You just DO WHAT THE FUCK YOU WANT TO.
14
+
data/README.md ADDED
@@ -0,0 +1,68 @@
1
+ When it comes to C-based extension Ruby gems on Windows,
2
+ the status quo depends on the heavyweight [MSYS2](https://www.msys2.org) to build and install them.
3
+ However, [__Minimum__ GNU for Windows (MinGW)](https://github.com/niXman/mingw-builds-binaries/releases),
4
+ a key component of MSYS2, is sufficient for half of the jobs all on its own.
5
+
6
+ `mingw-make` is a set of tiny non-intrusive mods for [RubyInstaller2 for Windows](https://rubyinstaller.org)
7
+ that solves the hurdles on the other half minimally.
8
+ With the aid of the secret [`ruby -run`](https://github.com/ruby/un) capability it has unleashed,
9
+ all it took was a couple of quick hacks and we have ourselves a lightweight Devkit.
10
+
11
+ Setups with MinGW and RubyInstaller’s prebuilds with these patches are ideal to keep footprints small,
12
+ for experts strongly recommend WSL for a fully-fledged Ruby environment.
13
+
14
+ This is a newly published experiment; I have only tested with a couple of projects, `bigdecimal-3.1.6` among them.
15
+ In theory, it’s compatible with anything that doesn’t leave [`mkmf`](https://rubyapi.org/o/MakeMakefile)’s comfort zone,
16
+ which I expect to be the majority of C-based gems. (It *will indeed* “take a while” when “Building native extensions”.)
17
+ Please do [let me know](https://github.com/ParadoxV5/ruby-mingw-make/issues)
18
+ if it doesn’t meet the expectations on something not unusual.
19
+
20
+
21
+ ## Setup
22
+
23
+ ### Requirements
24
+ * Windows
25
+ * Linux need MinGW not.
26
+ * Ruby from RubyInstaller2 without DevKit (MSYS2)
27
+ * Does it work with other Rubies? Well… maybe?
28
+ * MinGW for the Universal C Runtime (UCRT), with the `bin`aries folder on the `PATH`
29
+ * Will it work with MSYS? Uhh… likely not.
30
+
31
+ ### Installation
32
+ ```sh
33
+ gem install mingw-make
34
+ ```
35
+
36
+
37
+ ## Usage
38
+
39
+ ### Use with `gem`
40
+
41
+ Thanks to `gem`’s [plugins](https://guides.rubygems.org/plugins/) system, it’s online out of the box!
42
+
43
+ ### Use with [`rake-compiler`](https://github.com/rake-compiler/rake-compiler)
44
+
45
+ Slap this somewhere in the `Rakefile`:
46
+ ```ruby
47
+ begin
48
+ require 'mingw-make'
49
+ rescue LoadError
50
+ # ignore
51
+ end
52
+ ```
53
+
54
+ ### Use manually
55
+ Specify `mingw32-make` as the `MAKE` tool and prepend the `lib/mingw-make/mkmf.rb` script to the Ruby `$LOAD_PATH`.
56
+ ```bat
57
+ set MAKE=mingw32-make
58
+ set RUBYOPT=-Ipath/to/gems/mingw-make/lib/mingw-make/
59
+ ```
60
+
61
+
62
+ ## How to Contribute
63
+
64
+ Ackchyually – I would much prefer you **don’t**, but instead forward my tinkering to their corresponding upstreams.
65
+ Windows users like me would love if our chérie lang doesn’t require more (WSL) or less (MSYS) a Linux Virtual Machine.
66
+ (Imagine… Ruby VM in a Linux VM in a Windows VM… 🫠)
67
+ After all, the [WTFPL](LICENSE.txt) means that I’ve decided to release my knowledge to the public domain,
68
+ so no need to thank me and go bring developer happiness to its next level!
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rbconfig'
4
+
5
+ # Get `mkmf` to fall back to `ruby -run`
6
+ %w[
7
+ RM
8
+ RMALL
9
+ RMDIRS
10
+ MAKEDIRS
11
+ INSTALL
12
+ INSTALL_PROG
13
+ INSTALL_DATA
14
+ CP
15
+ ].each do|key|
16
+ RbConfig::CONFIG.delete key
17
+ RbConfig::MAKEFILE_CONFIG.delete key
18
+ end
19
+
20
+ require File.join RbConfig::CONFIG['rubylibdir'], 'mkmf'
21
+
22
+ module MakeMakefile
23
+ # Prevent translating to MSYS `/C/some/path/` for `mingw32-make`
24
+ def mkintpath(path) = path
25
+ end
data/lib/mingw-make.rb ADDED
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Set up `RUBYOPT=-I/absolute/path/to/lib/mingw-make/` for subprocesses
4
+ ENV['RUBYOPT'] = "#{ENV['RUBYOPT']} -I#{File.join __dir__, 'mingw-make'}"
5
+ ENV['MAKE'] ||= 'mingw32-make'
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Note:
4
+ # RubyInstaller2’s `rubygems/defaults/operating_system.rb`
5
+ # loads before this file, patch it immediately.
6
+ begin
7
+ require 'ruby_installer/runtime/msys2_installation'
8
+ rescue LoadError
9
+ # ignore
10
+ else
11
+ # Skip check MSYS2 when installing gems
12
+ class RubyInstaller::Runtime::Msys2Installation
13
+ alias _original_ruby_installer__enable_msys_apps enable_msys_apps
14
+ def enable_msys_apps(for_gem_install: nil, **kwargs)
15
+ _original_ruby_installer__enable_msys_apps(for_gem_install:, **kwargs) unless for_gem_install
16
+ end
17
+ end
18
+ end
19
+
20
+ Gem.pre_install { require_relative 'mingw-make' }
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ Gem::Specification.new do|spec|
4
+ spec.name = 'mingw-make'
5
+ spec.summary = 'Patches that enable Windows Ruby to install C extension gems with MinGW without MSYS2 (Devkit)'
6
+ spec.version = '1.0.0'
7
+ spec.author = 'ParadoxV5'
8
+ spec.license = 'WTFPL'
9
+
10
+ github_account = spec.author
11
+ github = "https://github.com/#{github_account}/ruby-#{spec.name}"
12
+ spec.metadata = {
13
+ 'homepage_uri' => spec.homepage = github,
14
+ 'changelog_uri' => File.join(github, 'releases'),
15
+ 'bug_tracker_uri' => File.join(github, 'issues'),
16
+ 'funding_uri' => "https://github.com/sponsors/#{github_account}"
17
+ }
18
+
19
+ spec.files = Dir['**/*']
20
+
21
+ spec.platform = 'x64-mingw-ucrt'
22
+ spec.required_ruby_version = '~> 3.1'
23
+ spec.requirements = [
24
+ 'Ruby from RubyInstaller2 for Windows without DevKit (MSYS2)',
25
+ 'UCRT MinGW'
26
+ ]
27
+ end
metadata ADDED
@@ -0,0 +1,56 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mingw-make
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: x64-mingw-ucrt
6
+ authors:
7
+ - ParadoxV5
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2024-02-10 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description:
14
+ email:
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - Gemfile
20
+ - LICENSE.txt
21
+ - README.md
22
+ - lib/mingw-make.rb
23
+ - lib/mingw-make/mkmf.rb
24
+ - lib/rubygems_plugin.rb
25
+ - mingw-make.gemspec
26
+ homepage: https://github.com/ParadoxV5/ruby-mingw-make
27
+ licenses:
28
+ - WTFPL
29
+ metadata:
30
+ homepage_uri: https://github.com/ParadoxV5/ruby-mingw-make
31
+ changelog_uri: https://github.com/ParadoxV5/ruby-mingw-make/releases
32
+ bug_tracker_uri: https://github.com/ParadoxV5/ruby-mingw-make/issues
33
+ funding_uri: https://github.com/sponsors/ParadoxV5
34
+ post_install_message:
35
+ rdoc_options: []
36
+ require_paths:
37
+ - lib
38
+ required_ruby_version: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: '3.1'
43
+ required_rubygems_version: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ requirements:
49
+ - Ruby from RubyInstaller2 for Windows without DevKit (MSYS2)
50
+ - UCRT MinGW
51
+ rubygems_version: 3.5.3
52
+ signing_key:
53
+ specification_version: 4
54
+ summary: Patches that enable Windows Ruby to install C extension gems with MinGW without
55
+ MSYS2 (Devkit)
56
+ test_files: []