Skip to content

Commit 8dfa6c3

Browse files
committed
Append found lib/<file> entries to spec.files to support out-of-place builds
1 parent 281a000 commit 8dfa6c3

1 file changed

Lines changed: 6 additions & 3 deletions

File tree

tool/rbinstall.rb

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -870,16 +870,19 @@ def load_gemspec(file, base = nil, files: nil)
870870
code = File.read(file, encoding: "utf-8:-")
871871

872872
code.gsub!(/^ *#.*/, "")
873-
files = files ? files.map(&:dump).join(", ") : ""
873+
spec_files = files ? files.map(&:dump).join(", ") : ""
874874
code.gsub!(/(?:`git[^\`]*`|%x\[git[^\]]*\])\.split(\([^\)]*\))?/m) do
875-
"[" + files + "]"
875+
"[" + spec_files + "]"
876876
end \
877877
or
878878
code.gsub!(/IO\.popen\(.*git.*?\)/) do
879-
"[" + files + "] || itself"
879+
"[" + spec_files + "] || itself"
880880
end
881881

882882
spec = eval(code, binding, file)
883+
# for out-of-place build
884+
collected_files = files ? files.map {|f| File.exist?(File.join(base || ".", f)) ? f : "lib/#{f}" }.select {|f| f.end_with?(".rb")} : []
885+
spec.files = spec.files.concat(collected_files).uniq
883886
unless Gem::Specification === spec
884887
raise TypeError, "[#{file}] isn't a Gem::Specification (#{spec.class} instead)."
885888
end

0 commit comments

Comments
 (0)