Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
6a94c26
dep: update development dependencies
flavorjones May 25, 2022
43591b2
Fix required ruby version in gem
jeremyevans Mar 5, 2019
0420e2f
dep: remove hoe, prefer a literal gemspec
flavorjones May 25, 2022
3851c2e
gem: manifest management
flavorjones May 25, 2022
e57c774
ci: simplify basic test pipeline
flavorjones May 25, 2022
28c3c83
ext: rebuild extconf and native.rake
flavorjones May 26, 2022
265a508
feat: define SQLite3::SQLITE_LOADED_VERSION
flavorjones May 26, 2022
92e2550
ext(warnings): use #ifdef to check _MSC_VER instead of #if
flavorjones May 26, 2022
abdbfd5
ext(warnings): quash more compiler warnings
flavorjones May 26, 2022
04522f4
ext: work around MakeMakefile.pkg_config issue in Ruby 3.1
flavorjones May 26, 2022
048115d
ci: configure appveyor
flavorjones Jun 7, 2022
bf7aaf4
test: use assert_in_delta for floats returned from db funcs
flavorjones Jun 7, 2022
21e9569
ext: patch automake files to support arm64-darwin systems
flavorjones Jun 7, 2022
e0359df
ext: support system libraries via `--enable-system-libraries`
flavorjones Jun 10, 2022
13bf584
ci: add coverage for mswin windows platform
MSP-Greg May 26, 2022
998431c
doc: convert rdoc files to markdown
flavorjones Jun 25, 2022
b7e0d3e
ext: ensure sqlcipher is supported as a system library
flavorjones Jun 26, 2022
e53a2f1
dev: annotate the sqlite3 version requirement for sqlite3_open_v2
flavorjones Jun 26, 2022
9aeeb9b
refactor: extconf.rb
flavorjones Jun 26, 2022
1065b5c
ci: cache sqlite3 builds
flavorjones Jun 26, 2022
1dfdbb0
ci: gracefully handle missing version.rb in the gemspec
flavorjones Jun 27, 2022
c9e164b
ext: test native gems on all rcd-supported platforms
flavorjones Jun 27, 2022
908e2a6
ext: support only ruby >= 2.6
flavorjones Jun 28, 2022
2965ef9
dev: update .gitignore
flavorjones Jul 4, 2022
e9b104d
dev: scripts to package gems and assert on their contents
flavorjones Jul 4, 2022
95e16d3
doc: update README and create LICENSE-DEPENDENCIES
flavorjones Jul 4, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
327 changes: 327 additions & 0 deletions .github/workflows/gem-install.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,327 @@
name: native packaging
concurrency:
group: "${{github.workflow}}-${{github.ref}}"
cancel-in-progress: true
on:
workflow_dispatch:
push:
branches:
- main
- v*.*.x
tags:
- v*.*.*
pull_request:
types: [opened, synchronize]
branches:
- '*'

jobs:
cache-tarball:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/cache@v3
with:
path: ports/archives
key: ports-archives-tarball-${{hashFiles('ext/sqlite3/extconf.rb')}}
- uses: ruby/setup-ruby-pkgs@v1
with:
ruby-version: "3.1"
bundler-cache: true
- run: bundle exec ruby ./ext/sqlite3/extconf.rb --download-dependencies

cruby-package:
needs: ["cache-tarball"]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/cache@v3
with:
path: ports/archives
key: ports-archives-tarball-${{hashFiles('ext/sqlite3/extconf.rb')}}
- uses: ruby/setup-ruby-pkgs@v1
with:
ruby-version: "3.1"
bundler-cache: true
- run: ./bin/test-gem-build gems ruby
- uses: actions/upload-artifact@v3
with:
name: cruby-gem
path: gems
retention-days: 1

cruby-linux-install:
needs: ["cruby-package"]
strategy:
fail-fast: false
matrix:
sys: ["enable", "disable"]
ruby: ["2.6", "2.7", "3.0", "3.1", "head"]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: MSP-Greg/setup-ruby-pkgs@v1
with:
ruby-version: "${{matrix.ruby}}"
apt-get: "libsqlite3-dev pkg-config"
- uses: actions/download-artifact@v3
with:
name: cruby-gem
path: gems
- run: ./bin/test-gem-install gems --${{matrix.sys}}-system-libraries

cruby-osx-install:
needs: ["cruby-package"]
strategy:
fail-fast: false
matrix:
sys: ["enable", "disable"]
ruby: ["3.1"]
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
- uses: ruby/setup-ruby-pkgs@v1
with:
ruby-version: "${{matrix.ruby}}"
- uses: actions/download-artifact@v3
with:
name: cruby-gem
path: gems
- run: ./bin/test-gem-install gems --${{matrix.sys}}-system-libraries

cruby-windows-install:
needs: ["cruby-package"]
strategy:
fail-fast: false
matrix:
sys: ["enable", "disable"]
ruby: ["3.0"]
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
- uses: MSP-Greg/setup-ruby-pkgs@v1
with:
ruby-version: "3.0"
mingw: "sqlite3"
- uses: actions/download-artifact@v3
with:
name: cruby-gem
path: gems
- run: |
gem install --verbose --no-document gems/*.gem -- --${{matrix.sys}}-system-libraries
gem list -d sqlite3
ruby -rsqlite3 -e 'puts SQLite3::SQLITE_LOADED_VERSION'

cruby-windows-install-ucrt:
needs: ["cruby-package"]
strategy:
fail-fast: false
matrix:
sys: ["enable", "disable"]
ruby: ["3.1"]
runs-on: windows-2022
steps:
- uses: actions/checkout@v3
- uses: MSP-Greg/setup-ruby-pkgs@v1
with:
ruby-version: "3.1"
mingw: "sqlite3"
- uses: actions/download-artifact@v3
with:
name: cruby-gem
path: gems
- run: |
gem install --verbose --no-document gems/*.gem -- --${{matrix.sys}}-system-libraries
gem list -d sqlite3
ruby -rsqlite3 -e 'puts SQLite3::SQLITE_LOADED_VERSION'

cruby-native-package:
needs: ["cache-tarball"]
strategy:
fail-fast: false
matrix:
plat:
- "aarch64-linux"
- "arm-linux"
# - "arm64-darwin" # omitted until github actions supports it
- "x64-mingw-ucrt"
- "x64-mingw32"
- "x86-linux"
- "x86_64-darwin"
- "x86_64-linux"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/cache@v3
with:
path: ports/archives
key: ports-archives-tarball-${{hashFiles('ext/sqlite3/extconf.rb')}}
- run: |
docker run --rm -v "$(pwd):/sqlite3" -w /sqlite3 \
larskanis/rake-compiler-dock-mri-${{matrix.plat}}:1.2.1 \
./bin/test-gem-build gems ${{matrix.plat}}
- uses: actions/upload-artifact@v3
with:
name: "cruby-${{matrix.plat}}-gem"
path: gems
retention-days: 1

cruby-aarch64-linux-install:
needs: ["cruby-native-package"]
strategy:
fail-fast: false
matrix:
ruby: ["2.6", "2.7", "3.0", "3.1"]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/download-artifact@v3
with:
name: cruby-aarch64-linux-gem
path: gems
- run: |
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
docker run --rm -v "$(pwd):/sqlite3" -w /sqlite3 \
--platform=linux/arm64/v8 \
ruby:${{matrix.ruby}} \
./bin/test-gem-install ./gems

cruby-arm-linux-install:
needs: ["cruby-native-package"]
strategy:
fail-fast: false
matrix:
ruby: ["2.6", "2.7", "3.0", "3.1"]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/download-artifact@v3
with:
name: cruby-arm-linux-gem
path: gems
- run: |
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
docker run --rm -v "$(pwd):/sqlite3" -w /sqlite3 \
--platform=linux/arm/v7 \
ruby:${{matrix.ruby}} \
./bin/test-gem-install ./gems

## arm64-darwin installation testing is omitted until github actions supports it
# cruby-arm64-darwin-install:
# ...

cruby-x64-mingw-ucrt-install:
needs: ["cruby-native-package"]
strategy:
fail-fast: false
matrix:
ruby: ["3.1"]
runs-on: windows-2022
steps:
- uses: actions/checkout@v3
- uses: MSP-Greg/setup-ruby-pkgs@v1
with:
ruby-version: "${{matrix.ruby}}"
- uses: actions/download-artifact@v3
with:
name: cruby-x64-mingw-ucrt-gem
path: gems
- run: |
gem install --verbose --no-document gems/*.gem
gem list -d sqlite3
ruby -rsqlite3 -e 'puts SQLite3::SQLITE_LOADED_VERSION'

cruby-x64-mingw32-install:
needs: ["cruby-native-package"]
strategy:
fail-fast: false
matrix:
ruby: ["2.6", "2.7", "3.0"]
runs-on: windows-2019
steps:
- uses: actions/checkout@v3
- uses: ruby/setup-ruby@v1
with:
ruby-version: "${{matrix.ruby}}"
- uses: actions/download-artifact@v3
with:
name: cruby-x64-mingw32-gem
path: gems
- run: |
gem install --verbose --no-document gems/*.gem
gem list -d sqlite3
ruby -rsqlite3 -e 'puts SQLite3::SQLITE_LOADED_VERSION'

cruby-x86-linux-install:
needs: ["cruby-native-package"]
strategy:
fail-fast: false
matrix:
ruby: ["2.6", "2.7", "3.0", "3.1"]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/download-artifact@v3
with:
name: cruby-x86-linux-gem
path: gems
- run: |
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
docker run --rm -v "$(pwd):/sqlite3" -w /sqlite3 \
--platform=linux/386 \
ruby:${{matrix.ruby}} \
./bin/test-gem-install ./gems

cruby-x86_64-darwin-install:
needs: ["cruby-native-package"]
strategy:
fail-fast: false
matrix:
ruby: ["2.6", "2.7", "3.0", "3.1"]
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
- uses: ruby/setup-ruby@v1
with:
ruby-version: "${{matrix.ruby}}"
- uses: actions/download-artifact@v3
with:
name: cruby-x86_64-darwin-gem
path: gems
- run: ./bin/test-gem-install gems

cruby-x86_64-linux-install:
needs: ["cruby-native-package"]
strategy:
fail-fast: false
matrix:
ruby: ["2.6", "2.7", "3.0", "3.1"]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ruby/setup-ruby@v1
with:
ruby-version: "${{matrix.ruby}}"
- uses: actions/download-artifact@v3
with:
name: cruby-x86_64-linux-gem
path: gems
- run: ./bin/test-gem-install gems

cruby-x86_64-linux-musl-install:
needs: ["cruby-native-package"]
strategy:
fail-fast: false
matrix:
ruby: ["2.6", "2.7", "3.0", "3.1"]
runs-on: ubuntu-latest
container:
image: ruby:${{matrix.ruby}}-alpine
steps:
- uses: actions/checkout@v3
- uses: actions/download-artifact@v3
with:
name: cruby-x86_64-linux-gem
path: gems
- run: apk add bash build-base
- run: ./bin/test-gem-install ./gems
Loading