Skip to content

Commit d6b4032

Browse files
committed
Append found lib/<file> entries to spec.files to support out-of-place builds
1 parent 674ddf4 commit d6b4032

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

tool/rbinstall.rb

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -870,16 +870,25 @@ 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 ? spec.files.concat(files).uniq : spec.files
885+
spec.files = collected_files.map do |f|
886+
if !File.exist?(File.join(base || ".", f)) && f.end_with?(".rb")
887+
"lib/#{f}"
888+
else
889+
f
890+
end
891+
end
883892
unless Gem::Specification === spec
884893
raise TypeError, "[#{file}] isn't a Gem::Specification (#{spec.class} instead)."
885894
end

0 commit comments

Comments
 (0)