diff options
author | John Hodge <tpg@mutabah.net> | 2019-02-23 14:17:47 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2019-02-23 14:17:47 +0800 |
commit | a2f952ba6fe355a804c2b5cb33deebbc07ac2462 (patch) | |
tree | c5564076dd5b5b40352d9ecdf75dc92444e0f7a5 /tools/minicargo/build.cpp | |
parent | a7868c927d1776d7c2570c95deae1cbd77483938 (diff) | |
download | mrust-a2f952ba6fe355a804c2b5cb33deebbc07ac2462.tar.gz |
minicargo - Fix infinite printing in build script error reporting if an over-long line is hit.
Diffstat (limited to 'tools/minicargo/build.cpp')
-rw-r--r-- | tools/minicargo/build.cpp | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/tools/minicargo/build.cpp b/tools/minicargo/build.cpp index d074525c..53fa1a16 100644 --- a/tools/minicargo/build.cpp +++ b/tools/minicargo/build.cpp @@ -794,6 +794,10 @@ bool Builder::build_target(const PackageManifest& manifest, const PackageTarget& args.push_back("--crate-type"); args.push_back("bin"); args.push_back("-o"); args.push_back(outfile); args.push_back("-L"); args.push_back(this->get_output_dir(true).str()); // NOTE: Forces `is_for_host` to true here. + if( true ) + { + args.push_back("-g"); + } for(const auto& d : m_opts.lib_search_dirs) { args.push_back("-L"); @@ -893,22 +897,24 @@ bool Builder::build_target(const PackageManifest& manifest, const PackageTarget& //auto _ = ScopedChdir { manifest.directory() }; if( !this->spawn_process(script_exe_abs.str().c_str(), {}, env, out_file, /*working_directory=*/manifest.directory()) ) { + auto failed_filename = out_file+"_failed.txt"; + remove(failed_filename.str().c_str()); + rename(out_file.str().c_str(), failed_filename.str().c_str()); + ::std::cerr << "Calling " << script_exe_abs << " failed" << ::std::endl; { - ::std::ifstream ifs(out_file); - char linebuf[512]; - while( !ifs.getline(linebuf, sizeof(linebuf)-1).eof() ) + ::std::ifstream ifs(failed_filename); + char linebuf[1024]; + while( ifs.good() && !ifs.eof() ) { + ifs.getline(linebuf, sizeof(linebuf)-1); if( strncmp(linebuf, "cargo:", 6) == 0 ) { continue; } - ::std::cerr << linebuf << ::std::endl; + ::std::cerr << "> " << linebuf << ::std::endl; } } - auto failed_filename = out_file+"_failed.txt"; - remove(failed_filename.str().c_str()); - rename(out_file.str().c_str(), failed_filename.str().c_str()); // Build failed, return an invalid path return ::helpers::path(); } |