Mercurial > octave
diff scripts/pkg/private/configure_make.m @ 21615:9ccd64201b4d
pkg: remove excessive number of private function files.
pkg() makes use of many subfunctions, themselves with several subfunctions.
They used to all be in a single file which became difficult to hack so it
was split into one file per function (even though they all remained private).
This change merges some of those functions back together so that only the
functions used by pkg itself, as well as subfunctions used by more than one
of those, remain as separate files.
* copy_built_files.m, copy_files.m, create_pkgadddel.m, extract_pkg.m,
finish_installation.m, generate_lookfor_cache.m, prepare_installation.m,
verify_directory.m: merged this functions into install.m since they are
only used by it.
* fix_depends.m, fix_version.m: merged this functions into get_description.m
since they are only used by it.
* getarchprefix.m: merged into create_pkgadddel.m which then got merged
into install.m.
* is_architecture_dependent.m: merged into copy_built_files.m which then got
merged into install.m.
* load_package_dirs.m: merged into load_packages_and_dependencies.m
* packinfo_copy_file.m, write_index.m: merged into copy_files.m which then
then got merged into install.m.
* parse_pkg_idx, print_package_description.m: merged into describe.m
* shell.m: merged into configure_make.m
* pkg/module.mk: update with removed files.
author | Carnë Draug <carandraug@octave.org> |
---|---|
date | Tue, 12 Apr 2016 17:46:20 +0100 |
parents | 8e5eca2c5a64 |
children | b571fc85953f |
line wrap: on
line diff
--- a/scripts/pkg/private/configure_make.m Tue Apr 12 10:36:36 2016 -0400 +++ b/scripts/pkg/private/configure_make.m Tue Apr 12 17:46:20 2016 +0100 @@ -97,3 +97,40 @@ endif endfunction + +## Executes a shell command. In the end it calls system() but in case of +## windows will first check if sh.exe works. +## +## If VERBOSE is true, it will prints the output to STDOUT in real time and +## the second output argument will be an empty string. Otherwise, it will +## contain the output of the execeuted command. +function [status, output] = shell (cmd, verbose) + persistent have_sh; + + cmd = strrep (cmd, "\\", "/"); + if (ispc () && ! isunix ()) + if (isempty (have_sh)) + if (system ('sh.exe -c "exit"')) + have_sh = false; + else + have_sh = true; + endif + endif + if (have_sh) + cmd = ['sh.exe -c "' cmd '"']; + else + error ("pkg: unable to find the command shell."); + endif + endif + ## if verbose, we want to display the output in real time. To do this, we + ## must call system with 1 output argument. But then the variable `output' + ## won't exist. So we initialize it empty. If an error does occur, and we + ## are verbose we will return an empty string but it's all fine since + ## the error message has already been displayed. + output = ""; + if (verbose) + [status] = system (cmd); + else + [status, output] = system (cmd); + endif +endfunction