Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

-c: Don't reprint all failed tasks when only a single task is rebuilt and fails #62

Open
jyn514 opened this issue Oct 13, 2021 · 1 comment

Comments

@jyn514
Copy link
Contributor

jyn514 commented Oct 13, 2021

Right now, when a C++ file fails to compile, Ekam will output something like this for each C++ file in the whole project:

✘ link: kj/debug-test.o
    ld.lld: error: undefined symbol: kj::_::Debug::Fault::fatal()
    >>> referenced by time.c++:303 (/ekam-provider/canonical/kj/time.c++:303)
    >>>               tmp/kj/time.o:(kj::operator*(kj::_::Stringifier, kj::Quantity<long, kj:
      :_::NanosecondLabel>))
    >>> referenced by time.c++:193 (/ekam-provider/canonical/kj/time.c++:193)
    >>>               tmp/kj/time.o:(kj::(anonymous namespace)::PosixClock::now() const)
    >>> referenced by time.c++:207 (/ekam-provider/canonical/kj/time.c++:207)
    >>>               tmp/kj/time.o:(kj::(anonymous namespace)::PosixMonotonicClock::now() 
      const)
    >>> referenced 70 more times
    
    ld.lld: error: undefined symbol: kj::_::Debug::Fault::~Fault()
    >>> referenced by time.c++:303 (/ekam-provider/canonical/kj/time.c++:303)
    >>>               tmp/kj/time.o:(kj::operator*(kj::_::Stringifier, kj::Quantity<long, kj:
      :_::NanosecondLabel>))
    >>> referenced by time.c++:193 (/ekam-provider/canonical/kj/time.c++:193)
    >>>               tmp/kj/time.o:(kj::(anonymous namespace)::PosixClock::now() const)
    >>> referenced by time.c++:207 (/ekam-provider/canonical/kj/time.c++:207)
    >>>               tmp/kj/time.o:(kj::(anonymous namespace)::PosixMonotonicClock::now() 
      const)
    >>> referenced 96 more times
    
    ld.lld: error: undefined symbol: kj::_::Debug::getOsErrorNumber(bool)
    >>> referenced by debug.h:544 (/ekam-provider/canonical/kj/debug.h:544)
    >>>               tmp/kj/time.o:(kj::_::Debug::SyscallResult kj::_::Debug::syscall<kj::(
      anonymous namespace)::PosixClock::now() const::'lambda'()>(kj::(anonymous namespace)::
      PosixClock::now() const::'lambda'()&&, bool))
    >>> referenced by debug.h:544 (/ekam-provider/canonical/kj/debug.h:544)
    >>>               tmp/kj/time.o:(kj::_::Debug::SyscallResult kj::_::Debug::syscall<kj::(
      anonymous namespace)::PosixMonotonicClock::now() const::'lambda'()>(kj::(anonymous 
    ...(log truncated; use -l to increase log limit)...

Then, if you change debug.c++ without fixing the error (e.g. you try a change that doesn't work), it will show the error from debug.c++, but it will also show red X's for each object file that failed to link, even though nothing's changed WRT to the object file since the last error.

✘ compile: kj/debug.c++
    /ekam-provider/canonical/kj/debug.c++:2:1: error: expected unqualified-id
✘ link: kj/common-test.o
✘ link: kj/memory-test.o
✘ compile: capnp/llvm-fuzzer-testcase.c++
✘ link: kj/encoding-test.o
✘ compile: capnp/schema-test.c++
✘ link: kj/async-xthread-test.o
...

It would be nice to only show the error for debug.c++, not all other files.

@kentonv
Copy link
Member

kentonv commented Oct 15, 2021

I think it would make sense to further de-emphasize the things that aren't new, and maybe move the new stuff to the end of the list so it's easier to find... but I do frequently find it useful to be able to see what else is still broken, like a little reminder of which tests I still need to fix.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants