diff --git a/Rakefile b/Rakefile index 07c4601..026acf6 100644 --- a/Rakefile +++ b/Rakefile @@ -18,6 +18,7 @@ task :compile do RubyMaven.exec('prepare-package') # after packaging the jrjackson-x.y.z.jar vendor jar dependencies Rake::Task['vendor_jars'].invoke + Rake::Task['verify_generated_files'].invoke end task :vendor_jars do @@ -25,6 +26,17 @@ task :vendor_jars do Jars::Installer.vendor_jars! end +# Fail the build if a file the gemspec lists is missing on disk. This stops a +# broken gem from shipping, as happened with 0.5.1. +task :verify_generated_files do + $LOAD_PATH.unshift(File.expand_path('lib', __dir__)) + require 'jrjackson/build_info' + missing = JrJackson::BuildInfo.files.reject { |f| File.file?(f) } + unless missing.empty? + raise "These files are listed in the gemspec but missing after compile #{missing.join(', ')}" + end +end + desc "Clean build" task :clean do RubyMaven.exec('clean') diff --git a/changelog.md b/changelog.md index 4989519..9c7bffe 100644 --- a/changelog.md +++ b/changelog.md @@ -1,3 +1,11 @@ +v0.5.2 + Fix packaging so the generated lib/jrjackson_jars.rb is included in the gem + List generated files explicitly instead of using Dir.glob so they are packaged even when generated after the gemspec is evaluated + Add a build step that fails when a file listed in the gemspec is missing + +v0.5.1 + Upgrade jackson and jackson-databind to v2.21.4 + v0.5.0 Upgrade jackson and jackson-databind to v2.21.2 Require JRuby 9.4.14.0 and Java 11 toolchain for builds diff --git a/lib/jrjackson/build_info.rb b/lib/jrjackson/build_info.rb index dd31bd9..c4ea672 100644 --- a/lib/jrjackson/build_info.rb +++ b/lib/jrjackson/build_info.rb @@ -1,11 +1,11 @@ module JrJackson module BuildInfo def self.version - '0.5.1' + '0.5.2' end def self.release_date - '2026-06-26' + '2026-07-07' end def self.files @@ -30,12 +30,18 @@ def self.jar_version private + # Use an explicit list, not Dir.glob. The gemspec is evaluated at Rakefile + # load time, before rake compile regenerates these files, so a glob would + # drop them. def self.generated_files - Dir.glob( %w(pom.xml lib/jrjackson_jars.rb) ) + %w(pom.xml lib/jrjackson_jars.rb) end + # Exclude jars from the glob. They are listed with their exact versions in + # generated_jar_files, so leftover jars from an older version are not + # packaged. def self.repo_files - Dir["lib/**/*"].select{ |f| File.file? f } + ["README.md", "jrjackson.gemspec", ] + Dir["lib/**/*"].select{ |f| File.file?(f) && !f.end_with?(".jar") } + ["README.md", "jrjackson.gemspec", ] end def self.generated_jar_files