ext/Rakefile in rdkafka-0.12.1 vs ext/Rakefile in rdkafka-0.13.0.beta.1

- old
+ new

@@ -1,68 +1,41 @@ # frozen_string_literal: true require File.expand_path('../../lib/rdkafka/version', __FILE__) +require "mini_portile2" require "fileutils" require "open-uri" task :default => :clean do - # For nix users, nix can't locate the file paths because the packages it's requiring aren't managed by the system but are - # managed by nix itself, so using the normal file paths doesn't work for nix users. - # - # Mini_portile causes an issue because it's dependencies are downloaded on the fly and therefore don't exist/aren't - # accessible in the nix environment - if ENV.fetch('RDKAFKA_EXT_PATH', '').empty? - # Download and compile librdkafka if RDKAFKA_EXT_PATH is not set - require "mini_portile2" - recipe = MiniPortile.new("librdkafka", Rdkafka::LIBRDKAFKA_VERSION) + # Download and compile librdkafka + recipe = MiniPortile.new("librdkafka", Rdkafka::LIBRDKAFKA_VERSION) - # Use default homebrew openssl if we're on mac and the directory exists - # and each of flags is not empty - if recipe.host&.include?("darwin") && system("which brew &> /dev/null") && Dir.exist?("#{homebrew_prefix = %x(brew --prefix openssl).strip}") - ENV["CPPFLAGS"] = "-I#{homebrew_prefix}/include" unless ENV["CPPFLAGS"] - ENV["LDFLAGS"] = "-L#{homebrew_prefix}/lib" unless ENV["LDFLAGS"] - end + # Use default homebrew openssl if we're on mac and the directory exists + # and each of flags is not empty + if recipe.host&.include?("darwin") && system("which brew &> /dev/null") && Dir.exist?("#{homebrew_prefix = %x(brew --prefix openssl).strip}") + ENV["CPPFLAGS"] = "-I#{homebrew_prefix}/include" unless ENV["CPPFLAGS"] + ENV["LDFLAGS"] = "-L#{homebrew_prefix}/lib" unless ENV["LDFLAGS"] + end - releases = File.expand_path(File.join(File.dirname(__FILE__), '../dist')) - - recipe.files << { - :url => "file://#{releases}/librdkafka_#{Rdkafka::LIBRDKAFKA_VERSION}.tar.gz", - :sha256 => Rdkafka::LIBRDKAFKA_SOURCE_SHA256 - } - recipe.configure_options = ["--host=#{recipe.host}"] - - # Disable using libc regex engine in favor of the embedded one - # The default regex engine of librdkafka does not always work exactly as most of the users - # would expect, hence this flag allows for changing it to the other one - if ENV.key?('RDKAFKA_DISABLE_REGEX_EXT') - recipe.configure_options << '--disable-regex-ext' - end - - recipe.cook - # Move dynamic library we're interested in - if recipe.host.include?('darwin') - from_extension = '1.dylib' - to_extension = 'dylib' - else - from_extension = 'so.1' - to_extension = 'so' - end - lib_path = File.join(File.dirname(__FILE__), "ports/#{recipe.host}/librdkafka/#{Rdkafka::LIBRDKAFKA_VERSION}/lib/librdkafka.#{from_extension}") - FileUtils.mv(lib_path, File.join(File.dirname(__FILE__), "librdkafka.#{to_extension}")) - # Cleanup files created by miniportile we don't need in the gem - FileUtils.rm_rf File.join(File.dirname(__FILE__), "tmp") - FileUtils.rm_rf File.join(File.dirname(__FILE__), "ports") + recipe.files << { + :url => "https://codeload.github.com/edenhill/librdkafka/tar.gz/v#{Rdkafka::LIBRDKAFKA_VERSION}", + :sha256 => Rdkafka::LIBRDKAFKA_SOURCE_SHA256 + } + recipe.configure_options = ["--host=#{recipe.host}"] + recipe.cook + # Move dynamic library we're interested in + if recipe.host.include?('darwin') + from_extension = '1.dylib' + to_extension = 'dylib' else - # Otherwise, copy existing libraries to ./ext - if ENV['RDKAFKA_EXT_PATH'].nil? || ENV['RDKAFKA_EXT_PATH'].empty? - raise "RDKAFKA_EXT_PATH must be set in your nix config when running under nix" - end - files = [ - File.join(ENV['RDKAFKA_EXT_PATH'], 'lib', 'librdkafka.dylib'), - File.join(ENV['RDKAFKA_EXT_PATH'], 'lib', 'librdkafka.so') - ] - files.each { |ext| FileUtils.cp(ext, File.dirname(__FILE__)) if File.exist?(ext) } + from_extension = 'so.1' + to_extension = 'so' end + lib_path = File.join(File.dirname(__FILE__), "ports/#{recipe.host}/librdkafka/#{Rdkafka::LIBRDKAFKA_VERSION}/lib/librdkafka.#{from_extension}") + FileUtils.mv(lib_path, File.join(File.dirname(__FILE__), "librdkafka.#{to_extension}")) + # Cleanup files created by miniportile we don't need in the gem + FileUtils.rm_rf File.join(File.dirname(__FILE__), "tmp") + FileUtils.rm_rf File.join(File.dirname(__FILE__), "ports") end task :clean do FileUtils.rm_f File.join(File.dirname(__FILE__), "librdkafka.dylib") FileUtils.rm_f File.join(File.dirname(__FILE__), "librdkafka.so")