Update to rake-compiler-dock-1.0
Version 1.0 switches to per-target docker images. So there is a specific image for x64-mingw32 and one for x86-mingw32. However our current logic mixes the build process of x86 and x64 behind several non-platform specific rake tasks. This fails with rcd-1.0 since each image has only x64 OR x86 tools. The solution in this commit is to separate each task by the platform value and to reference only the needed platform. As an advantage we can now execute docker builds in parallel for x64 and x86 per multitask. Since this conflicts with interactive password prompts, the gem signing key can be entered in advance. rcd-1.0 does stripping of binaries per default, so our manual tasks are needless.
This commit is contained in:
parent
de577148da
commit
c62f5d87d9
4
.gems
4
.gems
|
@ -1,6 +1,6 @@
|
|||
# .gems generated gem export file. Note that any env variable settings will be missing. Append these after using a ';' field separator
|
||||
rake-compiler -v1.0.6
|
||||
rake-compiler-dock -v0.7.0
|
||||
rake-compiler -v1.1.0
|
||||
rake-compiler-dock -v1.0.0
|
||||
hoe-deveiate -v0.10.0
|
||||
hoe-bundler -v1.3.0
|
||||
|
||||
|
|
8
Gemfile
8
Gemfile
|
@ -5,12 +5,14 @@
|
|||
source "https://rubygems.org/"
|
||||
|
||||
|
||||
gem "rake-compiler", "~>1.0", :group => [:development, :test]
|
||||
gem "rake-compiler-dock", "0.7.1", :group => [:development, :test]
|
||||
gem "hoe-mercurial", "~>1.4", :group => [:development, :test]
|
||||
gem "hoe-deveiate", "~>0.9", :group => [:development, :test]
|
||||
gem "hoe-highline", "~>0.2", :group => [:development, :test]
|
||||
gem "rake-compiler", "~>1.0", :group => [:development, :test]
|
||||
gem "rake-compiler-dock", "~>1.0", :group => [:development, :test]
|
||||
gem "hoe-bundler", "~>1.0", :group => [:development, :test]
|
||||
gem "rspec", "~>3.5", :group => [:development, :test]
|
||||
gem "rdoc", "~>5.1", :group => [:development, :test]
|
||||
gem "hoe", "~>3.17", :group => [:development, :test]
|
||||
gem "hoe", "~>3.20", :group => [:development, :test]
|
||||
|
||||
# vim: syntax=ruby
|
||||
|
|
4
Rakefile
4
Rakefile
|
@ -61,7 +61,7 @@ $hoespec = Hoe.spec 'pg' do
|
|||
self.developer 'Lars Kanis', 'lars@greiz-reinsdorf.de'
|
||||
|
||||
self.dependency 'rake-compiler', '~> 1.0', :developer
|
||||
self.dependency 'rake-compiler-dock', ['~> 0.7.0'], :developer
|
||||
self.dependency 'rake-compiler-dock', ['~> 1.0'], :developer
|
||||
self.dependency 'hoe-deveiate', '~> 0.9', :developer
|
||||
self.dependency 'hoe-bundler', '~> 1.0', :developer
|
||||
self.dependency 'rspec', '~> 3.5', :developer
|
||||
|
@ -129,7 +129,7 @@ Rake::ExtensionTask.new do |ext|
|
|||
|
||||
# Add libpq.dll to windows binary gemspec
|
||||
ext.cross_compiling do |spec|
|
||||
spec.files << "lib/libpq.dll"
|
||||
spec.files << "lib/#{spec.platform}/libpq.dll"
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -141,9 +141,9 @@ class CrossLibrary < OpenStruct
|
|||
end
|
||||
|
||||
desc "compile static openssl libraries"
|
||||
task :openssl_libs => [ libssl, libcrypto ]
|
||||
task "openssl_libs:#{for_platform}" => [ libssl, libcrypto ]
|
||||
|
||||
task :compile_static_openssl => openssl_makefile do |t|
|
||||
task "compile_static_openssl:#{for_platform}" => openssl_makefile do |t|
|
||||
chdir( static_openssl_builddir ) do
|
||||
cmd = cmd_prelude.dup
|
||||
cmd << 'make' << "-j#{NUM_CPUS}" << 'build_libs'
|
||||
|
@ -153,12 +153,12 @@ class CrossLibrary < OpenStruct
|
|||
end
|
||||
|
||||
desc "compile static #{libssl}"
|
||||
file libssl => :compile_static_openssl do |t|
|
||||
file libssl => "compile_static_openssl:#{for_platform}" do |t|
|
||||
rm t.name.gsub(/\.a$/, ".dll.a")
|
||||
end
|
||||
|
||||
desc "compile static #{libcrypto}"
|
||||
file libcrypto => :compile_static_openssl do |t|
|
||||
file libcrypto => "compile_static_openssl:#{for_platform}" do |t|
|
||||
rm t.name.gsub(/\.a$/, ".dll.a")
|
||||
end
|
||||
|
||||
|
@ -189,7 +189,7 @@ class CrossLibrary < OpenStruct
|
|||
end
|
||||
|
||||
# generate the makefile in a clean build location
|
||||
file postgresql_global_makefile => [ static_postgresql_builddir, :openssl_libs ] do |t|
|
||||
file postgresql_global_makefile => [ static_postgresql_builddir, "openssl_libs:#{for_platform}" ] do |t|
|
||||
options = [
|
||||
"--target=#{host_platform}",
|
||||
"--host=#{host_platform}",
|
||||
|
@ -231,10 +231,10 @@ class CrossLibrary < OpenStruct
|
|||
|
||||
|
||||
#desc 'compile libpg.a'
|
||||
task :libpq => postgresql_lib
|
||||
task "native:#{for_platform}" => postgresql_lib
|
||||
|
||||
# copy libpq.dll to lib dir
|
||||
dest_libpq = "lib/#{postgresql_lib.basename}"
|
||||
dest_libpq = "lib/#{for_platform}/#{postgresql_lib.basename}"
|
||||
directory File.dirname(dest_libpq)
|
||||
file dest_libpq => [postgresql_lib, File.dirname(dest_libpq)] do
|
||||
cp postgresql_lib, dest_libpq
|
||||
|
@ -250,7 +250,7 @@ end
|
|||
|
||||
if File.exist?(File.expand_path("~/.rake-compiler/config.yml"))
|
||||
CrossLibraries = [
|
||||
['i386-mingw32', 'mingw', 'i686-w64-mingw32'],
|
||||
['x86-mingw32', 'mingw', 'i686-w64-mingw32'],
|
||||
['x64-mingw32', 'mingw64', 'x86_64-w64-mingw32'],
|
||||
].map do |platform, openssl_config, toolchain|
|
||||
CrossLibrary.new platform, openssl_config, toolchain
|
||||
|
@ -261,7 +261,7 @@ else
|
|||
end
|
||||
|
||||
desc 'cross compile pg for win32'
|
||||
task :cross => [ :mingw32, :libpq ]
|
||||
task :cross => [ :mingw32 ]
|
||||
|
||||
task :mingw32 do
|
||||
# Use Rake::ExtensionCompiler helpers to find the proper host
|
||||
|
@ -272,30 +272,25 @@ task :mingw32 do
|
|||
end
|
||||
end
|
||||
|
||||
# To reduce the gem file size strip mingw32 dlls before packaging
|
||||
ENV['RUBY_CC_VERSION'].to_s.split(':').each do |ruby_version|
|
||||
task "tmp/i386-mingw32/stage/lib/#{ruby_version[/^\d+\.\d+/]}/pg_ext.so" do |t|
|
||||
sh "i686-w64-mingw32-strip -S tmp/i386-mingw32/stage/lib/#{ruby_version[/^\d+\.\d+/]}/pg_ext.so"
|
||||
end
|
||||
task 'gem:windows:prepare' do
|
||||
require 'io/console'
|
||||
require 'rake_compiler_dock'
|
||||
|
||||
task "tmp/x64-mingw32/stage/lib/#{ruby_version[/^\d+\.\d+/]}/pg_ext.so" do |t|
|
||||
sh "x86_64-w64-mingw32-strip -S tmp/x64-mingw32/stage/lib/#{ruby_version[/^\d+\.\d+/]}/pg_ext.so"
|
||||
end
|
||||
# Copy gem signing key and certs to be accessable from the docker container
|
||||
mkdir_p 'build/gem'
|
||||
sh "cp ~/.gem/gem-*.pem build/gem/ || true"
|
||||
sh "bundle package"
|
||||
ENV["GEM_PRIVATE_KEY_PASSPHRASE"] = STDIN.getpass("Enter passphrase of gem signature key: ")
|
||||
end
|
||||
|
||||
desc "Build the windows binary gems"
|
||||
task 'gem:windows' => ['ChangeLog'] do
|
||||
require 'rake_compiler_dock'
|
||||
|
||||
# Copy gem signing key and certs to be accessable from the docker container
|
||||
mkdir_p 'build/gem'
|
||||
sh "cp ~/.gem/gem-*.pem build/gem/ || true"
|
||||
sh "bundle package"
|
||||
|
||||
RakeCompilerDock.sh <<-EOT
|
||||
mkdir ~/.gem &&
|
||||
(cp build/gem/gem-*.pem ~/.gem/ || true) &&
|
||||
bundle install --local &&
|
||||
rake cross native gem MAKE="make -j`nproc`"
|
||||
EOT
|
||||
%w[ x86-mingw32 x64-mingw32 ].each do |platform|
|
||||
task "gem:windows:#{platform}" => ['ChangeLog', 'gem:windows:prepare'] do
|
||||
RakeCompilerDock.sh <<-EOT, platform: platform
|
||||
(cp build/gem/gem-*.pem ~/.gem/ || true) &&
|
||||
bundle install --local &&
|
||||
rake native:#{platform} gem MAKE="make -j`nproc`"
|
||||
EOT
|
||||
end
|
||||
desc "Build the windows binary gems"
|
||||
multitask 'gem:windows' => "gem:windows:#{platform}"
|
||||
end
|
||||
|
|
|
@ -22,7 +22,8 @@ rescue LoadError
|
|||
end
|
||||
|
||||
# Temporary add this directory for DLL search, so that libpq.dll can be found.
|
||||
add_dll_path.call(__dir__) do
|
||||
# mingw32-platform strings differ (RUBY_PLATFORM=i386-mingw32 vs. x86-mingw32 for rubygems)
|
||||
add_dll_path.call(File.join(__dir__, RUBY_PLATFORM.gsub(/^i386-/, "x86-"))) do
|
||||
require "#{major_minor}/pg_ext"
|
||||
end
|
||||
else
|
||||
|
|
47
pg.gemspec
47
pg.gemspec
|
@ -1,16 +1,17 @@
|
|||
# -*- encoding: utf-8 -*-
|
||||
# stub: pg 1.2.0.pre20191218152754 ruby lib
|
||||
# stub: pg 1.3.0.pre20191227185959 ruby lib
|
||||
# stub: ext/extconf.rb
|
||||
|
||||
Gem::Specification.new do |s|
|
||||
s.name = "pg".freeze
|
||||
s.version = "1.2.0.pre20191218152754"
|
||||
s.version = "1.3.0.pre20191227185959"
|
||||
|
||||
s.required_rubygems_version = Gem::Requirement.new("> 1.3.1".freeze) if s.respond_to? :required_rubygems_version=
|
||||
s.metadata = { "homepage_uri" => "https://github.com/ged/ruby-pg" } if s.respond_to? :metadata=
|
||||
s.require_paths = ["lib".freeze]
|
||||
s.authors = ["Michael Granger".freeze, "Lars Kanis".freeze]
|
||||
s.cert_chain = ["certs/ged.pem".freeze]
|
||||
s.date = "2019-12-18"
|
||||
s.date = "2019-12-27"
|
||||
s.description = "Pg is the Ruby interface to the {PostgreSQL RDBMS}[http://www.postgresql.org/].\n\nIt works with {PostgreSQL 9.2 and later}[http://www.postgresql.org/support/versioning/].\n\nA small example usage:\n\n #!/usr/bin/env ruby\n\n require 'pg'\n\n # Output a table of current connections to the DB\n conn = PG.connect( dbname: 'sales' )\n conn.exec( \"SELECT * FROM pg_stat_activity\" ) do |result|\n puts \" PID | User | Query\"\n result.each do |row|\n puts \" %7d | %-16s | %s \" %\n row.values_at('procpid', 'usename', 'current_query')\n end\n end".freeze
|
||||
s.email = ["ged@FaerieMUD.org".freeze, "lars@greiz-reinsdorf.de".freeze]
|
||||
s.extensions = ["ext/extconf.rb".freeze]
|
||||
|
@ -20,42 +21,32 @@ Gem::Specification.new do |s|
|
|||
s.licenses = ["BSD-2-Clause".freeze]
|
||||
s.rdoc_options = ["--main".freeze, "README.rdoc".freeze]
|
||||
s.required_ruby_version = Gem::Requirement.new(">= 2.2".freeze)
|
||||
s.rubygems_version = "3.0.6".freeze
|
||||
s.rubygems_version = "3.1.2".freeze
|
||||
s.summary = "Pg is the Ruby interface to the {PostgreSQL RDBMS}[http://www.postgresql.org/]".freeze
|
||||
|
||||
if s.respond_to? :specification_version then
|
||||
s.specification_version = 4
|
||||
end
|
||||
|
||||
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
||||
s.add_development_dependency(%q<hoe-mercurial>.freeze, ["~> 1.4"])
|
||||
s.add_development_dependency(%q<hoe-deveiate>.freeze, ["~> 0.10"])
|
||||
s.add_development_dependency(%q<hoe-highline>.freeze, ["~> 0.2"])
|
||||
s.add_development_dependency(%q<rake-compiler>.freeze, ["~> 1.0"])
|
||||
s.add_development_dependency(%q<rake-compiler-dock>.freeze, ["~> 0.7.0"])
|
||||
s.add_development_dependency(%q<hoe-bundler>.freeze, ["~> 1.0"])
|
||||
s.add_development_dependency(%q<rspec>.freeze, ["~> 3.5"])
|
||||
s.add_development_dependency(%q<rdoc>.freeze, ["~> 5.1"])
|
||||
s.add_development_dependency(%q<hoe>.freeze, ["~> 3.18"])
|
||||
else
|
||||
s.add_dependency(%q<hoe-mercurial>.freeze, ["~> 1.4"])
|
||||
s.add_dependency(%q<hoe-deveiate>.freeze, ["~> 0.10"])
|
||||
s.add_dependency(%q<hoe-highline>.freeze, ["~> 0.2"])
|
||||
s.add_dependency(%q<rake-compiler>.freeze, ["~> 1.0"])
|
||||
s.add_dependency(%q<rake-compiler-dock>.freeze, ["~> 0.7.0"])
|
||||
s.add_dependency(%q<hoe-bundler>.freeze, ["~> 1.0"])
|
||||
s.add_dependency(%q<rspec>.freeze, ["~> 3.5"])
|
||||
s.add_dependency(%q<rdoc>.freeze, ["~> 5.1"])
|
||||
s.add_dependency(%q<hoe>.freeze, ["~> 3.18"])
|
||||
end
|
||||
if s.respond_to? :add_runtime_dependency then
|
||||
s.add_development_dependency(%q<hoe-mercurial>.freeze, ["~> 1.4"])
|
||||
s.add_development_dependency(%q<hoe-deveiate>.freeze, ["~> 0.9"])
|
||||
s.add_development_dependency(%q<hoe-highline>.freeze, ["~> 0.2"])
|
||||
s.add_development_dependency(%q<rake-compiler>.freeze, ["~> 1.0"])
|
||||
s.add_development_dependency(%q<rake-compiler-dock>.freeze, ["~> 1.0"])
|
||||
s.add_development_dependency(%q<hoe-bundler>.freeze, ["~> 1.0"])
|
||||
s.add_development_dependency(%q<rspec>.freeze, ["~> 3.5"])
|
||||
s.add_development_dependency(%q<rdoc>.freeze, ["~> 5.1"])
|
||||
s.add_development_dependency(%q<hoe>.freeze, ["~> 3.20"])
|
||||
else
|
||||
s.add_dependency(%q<hoe-mercurial>.freeze, ["~> 1.4"])
|
||||
s.add_dependency(%q<hoe-deveiate>.freeze, ["~> 0.10"])
|
||||
s.add_dependency(%q<hoe-deveiate>.freeze, ["~> 0.9"])
|
||||
s.add_dependency(%q<hoe-highline>.freeze, ["~> 0.2"])
|
||||
s.add_dependency(%q<rake-compiler>.freeze, ["~> 1.0"])
|
||||
s.add_dependency(%q<rake-compiler-dock>.freeze, ["~> 0.7.0"])
|
||||
s.add_dependency(%q<rake-compiler-dock>.freeze, ["~> 1.0"])
|
||||
s.add_dependency(%q<hoe-bundler>.freeze, ["~> 1.0"])
|
||||
s.add_dependency(%q<rspec>.freeze, ["~> 3.5"])
|
||||
s.add_dependency(%q<rdoc>.freeze, ["~> 5.1"])
|
||||
s.add_dependency(%q<hoe>.freeze, ["~> 3.18"])
|
||||
s.add_dependency(%q<hoe>.freeze, ["~> 3.20"])
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue