diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7297ede1..7ab693aa 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,8 +23,8 @@ env: jobs: ruby_versions: outputs: - setup_ruby: "['3.1', '3.2', '3.3', '3.4']" - image_tag: "['3.1', '3.2', '3.3', '3.4']" + setup_ruby: "['3.2', '3.3', '3.4', '4.0']" + image_tag: "['3.2', '3.3', '3.4', '4.0']" runs-on: ubuntu-latest steps: - run: echo "generating rubies ..." @@ -38,9 +38,9 @@ jobs: BUNDLE_WITHOUT: "" # we need rubocop, obviously steps: - uses: actions/checkout@v6 - - uses: ruby/setup-ruby@v1 + - uses: ruby/setup-ruby@d3e3bd032ad2222a8ac878bbccf2aba78864e134 with: - ruby-version: "3.3" + ruby-version: "3.4" bundler-cache: true - run: bundle exec rake rubocop @@ -51,7 +51,8 @@ jobs: - uses: actions/checkout@v6 - uses: ruby/setup-ruby-pkgs@v1 with: - ruby-version: "3.3" + setup-ruby-ref: ruby/setup-ruby/d3e3bd032ad2222a8ac878bbccf2aba78864e134 + ruby-version: "3.4" bundler-cache: true apt-get: libsqlite3-dev - run: bundle exec rake compile -- --enable-system-libraries @@ -82,6 +83,7 @@ jobs: - uses: actions/checkout@v6 - uses: ruby/setup-ruby-pkgs@v1 with: + setup-ruby-ref: ruby/setup-ruby/d3e3bd032ad2222a8ac878bbccf2aba78864e134 ruby-version: ${{ matrix.ruby }} bundler-cache: true apt-get: libsqlite3-dev @@ -150,6 +152,7 @@ jobs: - uses: actions/checkout@v6 - uses: ruby/setup-ruby-pkgs@v1 with: + setup-ruby-ref: ruby/setup-ruby/d3e3bd032ad2222a8ac878bbccf2aba78864e134 ruby-version: ${{ matrix.ruby }} bundler-cache: true apt-get: libsqlcipher-dev @@ -166,7 +169,8 @@ jobs: - uses: actions/checkout@v6 - uses: ruby/setup-ruby-pkgs@v1 with: - ruby-version: "3.3" + setup-ruby-ref: ruby/setup-ruby/d3e3bd032ad2222a8ac878bbccf2aba78864e134 + ruby-version: "3.4" bundler-cache: true apt-get: valgrind - uses: actions/cache@v4 @@ -191,9 +195,9 @@ jobs: with: path: ports/archives key: ports-archives-tarball-${{ hashFiles('ext/sqlite3/extconf.rb','dependencies.yml') }} - - uses: ruby/setup-ruby@v1 + - uses: ruby/setup-ruby@d3e3bd032ad2222a8ac878bbccf2aba78864e134 with: - ruby-version: "3.3" + ruby-version: "3.4" bundler-cache: true - run: bundle exec ruby ./ext/sqlite3/extconf.rb --download-dependencies - id: rcd_image_version @@ -209,9 +213,9 @@ jobs: with: path: ports/archives key: ports-archives-tarball-${{ hashFiles('ext/sqlite3/extconf.rb','dependencies.yml') }} - - uses: ruby/setup-ruby@v1 + - uses: ruby/setup-ruby@d3e3bd032ad2222a8ac878bbccf2aba78864e134 with: - ruby-version: "3.3" + ruby-version: "3.4" bundler-cache: true - run: ./bin/test-gem-build gems ruby - uses: actions/upload-artifact@v5 @@ -237,6 +241,7 @@ jobs: - uses: actions/checkout@v6 - uses: ruby/setup-ruby-pkgs@v1 with: + setup-ruby-ref: ruby/setup-ruby/d3e3bd032ad2222a8ac878bbccf2aba78864e134 ruby-version: ${{ matrix.ruby }} apt-get: libsqlite3-dev pkg-config mingw: sqlite3 @@ -344,7 +349,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v6 - - uses: ruby/setup-ruby@v1 + - uses: ruby/setup-ruby@d3e3bd032ad2222a8ac878bbccf2aba78864e134 with: ruby-version: "${{ matrix.ruby }}" - uses: actions/download-artifact@v6 @@ -360,13 +365,12 @@ jobs: fail-fast: false matrix: include: - - { ruby: "3.1", flavor: "alpine3.18" } - - { ruby: "3.1", flavor: "alpine3.19" } - { ruby: "3.2", flavor: "alpine3.18" } - { ruby: "3.2", flavor: "alpine3.19" } - { ruby: "3.3", flavor: "alpine3.18" } - { ruby: "3.3", flavor: "alpine3.19" } - { ruby: "3.4", flavor: "alpine" } + - { ruby: "4.0", flavor: "alpine" } runs-on: ubuntu-latest container: image: ruby:${{matrix.ruby}}-${{matrix.flavor}} diff --git a/Gemfile b/Gemfile index 1c4bb9a1..767e9a4d 100644 --- a/Gemfile +++ b/Gemfile @@ -8,7 +8,7 @@ group :test do gem "ruby_memcheck", "3.0.1" if Gem::Platform.local.os == "linux" gem "rake-compiler", "1.3.0" - gem "rake-compiler-dock", "1.10.0" + gem "rake-compiler-dock", "1.11.0" end group :development do diff --git a/INSTALLATION.md b/INSTALLATION.md index e3dd5f3f..1ef70977 100644 --- a/INSTALLATION.md +++ b/INSTALLATION.md @@ -7,7 +7,7 @@ This document will help you install the `sqlite3` ruby gem. It also contains ins ### Native Gems (recommended) -In v2.0.0 and later, native (precompiled) gems are available for recent Ruby versions on these platforms: +In v2.5.0 and later, native (precompiled) gems are available for recent Ruby versions on these platforms: - `aarch64-linux-gnu` (requires: glibc >= 2.29) - `aarch64-linux-musl` @@ -15,30 +15,30 @@ In v2.0.0 and later, native (precompiled) gems are available for recent Ruby ver - `arm-linux-musl` - `arm64-darwin` - `x64-mingw-ucrt` -- `x86-linux-gnu` (requires: glibc >= 2.17) +- `x86-linux-gnu` (requires: glibc >= 2.29) - `x86-linux-musl` - `x86_64-darwin` -- `x86_64-linux-gnu` (requires: glibc >= 2.17) +- `x86_64-linux-gnu` (requires: glibc >= 2.29) - `x86_64-linux-musl` ⚠ Musl linux users should update to Bundler >= 2.5.6 to avoid https://github.com/rubygems/rubygems/issues/7432 If you are using one of these Ruby versions on one of these platforms, the native gem is the recommended way to install sqlite3-ruby. -For example, on a linux system running Ruby 3.1: +For example, on a linux system running Ruby 3.4: ``` text $ ruby -v -ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux] +ruby 3.4.7 (2025-10-08 revision 7a5688e2a2) +PRISM [x86_64-linux] $ time gem install sqlite3 -Fetching sqlite3-1.5.0-x86_64-linux.gem -Successfully installed sqlite3-1.5.0-x86_64-linux +Fetching sqlite3-2.8.1-x86_64-linux-gnu.gem +Successfully installed sqlite3-2.8.1-x86_64-linux-gnu 1 gem installed -real 0m4.274s -user 0m0.734s -sys 0m0.165s +real 0m1.273s +user 0m0.496s +sys 0m0.078s ``` #### Avoiding the precompiled native gem diff --git a/bin/test-gem-file-contents b/bin/test-gem-file-contents index 52a201fd..71610479 100755 --- a/bin/test-gem-file-contents +++ b/bin/test-gem-file-contents @@ -65,7 +65,7 @@ Minitest::Reporters.use!([Minitest::Reporters::SpecReporter.new]) puts "Testing '#{gemfile}' (#{gemspec.platform})" describe File.basename(gemfile) do - let(:supported_ruby_versions) { ["3.1", "3.2", "3.3", "3.4"] } + let(:supported_ruby_versions) { ["3.2", "3.3", "3.4", "4.0"] } describe "setup" do it "gemfile contains some files" do diff --git a/rakelib/native.rake b/rakelib/native.rake index a42795f8..46fe78bd 100644 --- a/rakelib/native.rake +++ b/rakelib/native.rake @@ -19,7 +19,7 @@ cross_platforms = [ "x86_64-darwin", "x64-mingw-ucrt" ] -RakeCompilerDock.set_ruby_cc_version("~> 3.1") +RakeCompilerDock.set_ruby_cc_version(">= 3.2") Gem::PackageTask.new(SQLITE3_SPEC).define # packaged_tarball version of the gem for platform=ruby task "package" => cross_platforms.map { |p| "gem:#{p}" } # "package" task for all the native platforms diff --git a/sqlite3.gemspec b/sqlite3.gemspec index 4754f624..f8d04639 100644 --- a/sqlite3.gemspec +++ b/sqlite3.gemspec @@ -18,7 +18,7 @@ Gem::Specification.new do |s| s.licenses = ["BSD-3-Clause"] - s.required_ruby_version = Gem::Requirement.new(">= 3.1") + s.required_ruby_version = Gem::Requirement.new(">= 3.2") s.homepage = "https://github.com/sparklemotion/sqlite3-ruby" s.metadata = {