summaryrefslogtreecommitdiff
path: root/tools/minicargo/build.cpp
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2019-02-23 14:17:47 +0800
committerJohn Hodge <tpg@mutabah.net>2019-02-23 14:17:47 +0800
commita2f952ba6fe355a804c2b5cb33deebbc07ac2462 (patch)
treec5564076dd5b5b40352d9ecdf75dc92444e0f7a5 /tools/minicargo/build.cpp
parenta7868c927d1776d7c2570c95deae1cbd77483938 (diff)
downloadmrust-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.cpp20
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();
}