@@ -60,6 +60,8 @@ def self.parse(options)
6060 puts "Additionally, the following environment variables control the script:"
6161 puts " - #{ VAR_CUSTOM_INIT_SCRIPT } - if set, this script will be run from the Arduino/libraries directory"
6262 puts " prior to any automated library installation or testing (e.g. to install unofficial libraries)"
63+ puts " - #{ VAR_CUSTOM_INIT_SCRIPT_SHELL } - if set, this will override the"
64+ puts " default shell (/bin/sh) used to execute #{ VAR_CUSTOM_INIT_SCRIPT } with."
6365 puts " - #{ VAR_USE_SUBDIR } - if set, the script will install the library from this subdirectory of the cwd"
6466 puts " - #{ VAR_EXPECT_EXAMPLES } - if set, testing will fail if no example sketches are present"
6567 puts " - #{ VAR_EXPECT_UNITTESTS } - if set, testing will fail if no unit tests are present"
@@ -322,16 +324,17 @@ def get_annotated_compilers(config, cpp_library)
322324# In this case, the user provided script would fetch a git repo or some other method.
323325def perform_custom_initialization ( )
324326 script_path = ENV [ VAR_CUSTOM_INIT_SCRIPT ]
327+ script_shell = ENV [ VAR_CUSTOM_INIT_SCRIPT + "_SHELL" ] || "/bin/sh"
325328 inform ( "Environment variable #{ VAR_CUSTOM_INIT_SCRIPT } " ) { "'#{ script_path } '" }
326329 return if script_path . nil?
327330 return if script_path . empty?
328331
329332 script_pathname = Pathname . getwd + script_path
330333 assure ( "Script at #{ VAR_CUSTOM_INIT_SCRIPT } exists" ) { script_pathname . exist? }
331334
332- assure_multiline ( "Running #{ script_pathname } with sh in libraries working dir" ) do
335+ assure_multiline ( "Running #{ script_pathname } with #{ script_shell } in libraries working dir" ) do
333336 Dir . chdir ( @backend . lib_dir ) do
334- IO . popen ( [ "/bin/sh" , script_pathname . to_s ] , err : [ :child , :out ] ) do |io |
337+ IO . popen ( [ script_shell , script_pathname . to_s ] , err : [ :child , :out ] ) do |io |
335338 io . each_line { |line | puts " #{ line } " }
336339 end
337340 end
0 commit comments