taskchampion-rb 0.9.6 → 0.9.7

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: 4d630eddac8dfcb822f6e7f09d61f47abf4bc7597cc2d5cc127b53bff7a6a2f2
4
- data.tar.gz: 7fbf3649576f7b77114f67fb9ea04c5018d06ba27dc0746b74a35a67c8af1cb5
3
+ metadata.gz: 42b23c3273d5b9953634be0e881ce7cffbd451f29468f17eb6f9cbcdf236ce0b
4
+ data.tar.gz: 6dde1f28ba13970fbb850ecfc82bdd07ac4f20a5f7e2fff54e028995043f11fb
5
5
  SHA512:
6
- metadata.gz: a412f351c3b06ba461ae2404bad35c2944cbd25245e7f7ed7415e8d97647fd21c397c15b538064530481029ce10be0a37d0ad75156f6907cb515ea89fa66382e
7
- data.tar.gz: b428ea2050a5286a05a6c73037434874161c7cc4c3df0784c1741b53fffc47918819a88c1aae537ebde2ca5466b46be071905aebffc2995034ad9a3784337996
6
+ metadata.gz: 69a4c9013c7441a9ce966e096e07ebd41549460f8160027780ce388a4514946260748f75245cc3fed5da2964d6c029a127d2feb9fb5210589b4487f6b13be94a
7
+ data.tar.gz: e5af336507eb5105250be66e308527ba137ee50124cf24de34793f63d6448e618f2d7f996f0fe777bb88ce17e95c7c151755ce6815eeeac60c0bde44e8188401
data/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ ## [Unreleased]
2
+
3
+ - Link the system `libsqlite3` by default again, as 0.9.4 did, so
4
+ `libsqlite3-dev` is once more a build prerequisite on Linux. Since
5
+ 0.9.5 the extension compiled its own copy of SQLite, which leaves two
6
+ SQLite copies in any process that also loads the `sqlite3` gem; they
7
+ do not share POSIX file locks, which can corrupt the database.
8
+ - Add an opt-in switch for bundled SQLite: set
9
+ `TASKCHAMPION_BUNDLED_SQLITE=1` or pass `--with-bundled-sqlite` at
10
+ install time. Only use it when nothing else in the process loads
11
+ SQLite.
12
+
1
13
  ## [0.9.6] - 2026-10-22
2
14
 
3
15
  - Update `rb-sys` to 0.9.130 (pulling in `bindgen` 0.72.1) in
data/README.md CHANGED
@@ -20,15 +20,35 @@ This gem supports Ruby 3.3 and later. We follow Ruby's end-of-life (EOL) schedul
20
20
  libclang over Ruby's headers to generate FFI bindings during `rake compile`.
21
21
  - **Debian/Ubuntu:** `sudo apt install clang libclang-dev`
22
22
  - **macOS:** `xcode-select --install`
23
- 3. Rust toolchain (optional — if `cargo` is not found, `rb-sys` bootstraps its
23
+ 3. System SQLite development files — the extension links the system
24
+ `libsqlite3` by default.
25
+ - **Debian/Ubuntu:** `sudo apt install libsqlite3-dev`
26
+ - **macOS:** nothing to install; the OS ships `libsqlite3`.
27
+ 4. Rust toolchain (optional — if `cargo` is not found, `rb-sys` bootstraps its
24
28
  own rustup + toolchain during the build). To install it yourself:
25
29
 
26
30
  ```bash
27
31
  curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
28
32
  ```
29
33
 
30
- > SQLite is compiled from source into the extension (the `bundled` feature), so
31
- > no system SQLite / `libsqlite3-dev` is required.
34
+ ### Bundled SQLite (opt-in)
35
+
36
+ To compile SQLite from source into the extension instead of linking the
37
+ system library, set the switch at install time:
38
+
39
+ ```bash
40
+ TASKCHAMPION_BUNDLED_SQLITE=1 gem install taskchampion-rb
41
+ # or
42
+ gem install taskchampion-rb -- --with-bundled-sqlite
43
+ # or, with Bundler
44
+ bundle config build.taskchampion-rb --with-bundled-sqlite
45
+ ```
46
+
47
+ > **Warning:** do not use bundled SQLite in a process that also loads another
48
+ > copy of SQLite, such as the `sqlite3` gem (e.g. a Rails app). Two SQLite
49
+ > copies in one process do not see each other's POSIX file locks, which can
50
+ > corrupt the database. Bundling is only safe when taskchampion-rb is the sole
51
+ > SQLite user in the process.
32
52
 
33
53
  ### Building from source
34
54
 
data/Rakefile CHANGED
@@ -32,10 +32,17 @@ task :publish, [:version] do |t, args|
32
32
  version = args[:version] || "patch"
33
33
 
34
34
  puts "Bumping version (#{version})..."
35
- sh "bump #{version} --tag"
35
+ # Commit and tag here rather than with bump --tag: bump's "vX.Y.Z"
36
+ # subject fails the commit-msg hook, and bump tags even when the
37
+ # commit fails.
38
+ sh "bump #{version} --no-commit"
39
+ new_version = `bump current --value-only`.strip
40
+ sh "git add lib/taskchampion/version.rb Gemfile.lock"
41
+ sh "git commit -m 'Bump to v#{new_version}'"
42
+ sh "git tag -a v#{new_version} -m v#{new_version}"
36
43
 
37
44
  puts "Pushing to git..."
38
- sh "git push && git push --tags"
45
+ sh "git push && git push origin v#{new_version}"
39
46
 
40
47
  puts "Building and releasing gem..."
41
48
  Rake::Task["release"].invoke
@@ -12,11 +12,15 @@ crate-type = ["cdylib"]
12
12
  [dependencies]
13
13
  magnus = { version = "0.7", features = ["rb-sys"] }
14
14
  rb-sys = "0.9.103"
15
- # `bundled` compiles SQLite from source into the extension so the build does not
16
- # depend on the host having libsqlite3-dev / a compatible system SQLite.
17
- taskchampion = { version = "2.0", default-features = false, features = ["bundled", "server-sync", "server-gcp"] }
15
+ # SQLite is linked from the system by default. See the bundled-sqlite feature.
16
+ taskchampion = { version = "2.0", default-features = false, features = ["server-sync", "server-gcp"] }
18
17
  chrono = "0.4"
19
18
  uuid = "1.0"
20
19
 
21
20
  [features]
22
21
  default = ["rb-sys/stable-api-compiled-fallback"]
22
+ # Compile a private copy of SQLite into the extension instead of linking the
23
+ # system libsqlite3. Do not enable this in a process that also loads another
24
+ # SQLite (e.g. the sqlite3 gem): two copies do not share POSIX file locks,
25
+ # which can corrupt the database. Enabled through extconf.rb.
26
+ bundled-sqlite = ["taskchampion/bundled"]
@@ -3,4 +3,14 @@
3
3
  require "mkmf"
4
4
  require "rb_sys/mkmf"
5
5
 
6
- create_rust_makefile("taskchampion/taskchampion")
6
+ # Opt in to compiling SQLite into the extension with either
7
+ # TASKCHAMPION_BUNDLED_SQLITE=1
8
+ # or
9
+ # gem install taskchampion-rb -- --with-bundled-sqlite
10
+ # bundle config build.taskchampion-rb --with-bundled-sqlite
11
+ bundled_sqlite = with_config("bundled-sqlite") ||
12
+ %w[1 true yes].include?(ENV["TASKCHAMPION_BUNDLED_SQLITE"])
13
+
14
+ create_rust_makefile("taskchampion/taskchampion") do |r|
15
+ r.features = ["bundled-sqlite"] if bundled_sqlite
16
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Taskchampion
4
- VERSION = "0.9.6"
4
+ VERSION = "0.9.7"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: taskchampion-rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.6
4
+ version: 0.9.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Case