LLDB buildbot state

We've just managed to get the FreeBSD amd64 (x86-64) buildbot back to green:
http://llvm-amd64.freebsd.your.org/b/builders/lldb-amd64-freebsd/builds/1748

(For FreeBSD i386, LLDB builds but does not work properly. This
hasn't been a priority for anyone yet.)

I see that the Linux and OS X buildbots are currently failing, and
have been for some time. Is anyone working on restoring these?

I’ve not been looking at the linux one. However, I am in the process of fixing something in llvm that is broken due to unexpected interactions between libedit, libbsd and <bsd/stdlib.h> on Ubuntu (and probably other linux variants that might implement libedit in terms of libbsd).

I've not been looking at the linux one. However, I am in the process of fixing something in llvm that is broken due to unexpected interactions between libedit, libbsd and <bsd/stdlib.h> on Ubuntu (and probably other linux variants that might implement libedit in terms of libbsd).

The problem here is that any Ubuntu < 13.10 (which unfortunately includes 12.04 LTS we are using) use libedit
2.11-20080614 while latest lldb source/Host/common/Editline.cpp relies on libedit 3.1 API (available only for 13.10).

I presume that Ubuntu < 13.10 builds should use their own libedit 3.1 probably linked statically, but I have absolutely no idea how to configure that.

Currently my build here fails:

/home/ono/Projects/llvm/tools/lldb/source/Host/common/Editline.cpp:70:27: error: use of undeclared identifier 'EL_PROMPT_ESC'
    ::el_set (m_editline, EL_PROMPT_ESC, GetPromptCallback, k_prompt_escape_char);
                          ^
/home/ono/Projects/llvm/tools/lldb/source/Host/common/Editline.cpp:265:31: error: cannot initialize a parameter of type 'char *' with an rvalue of type 'const char *'
        ::el_push(m_editline, std::string (bytes, len).c_str());
                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/histedit.h:95:34: note: passing argument to parameter here
void el_push(EditLine *, char *);
                                           ^
/home/ono/Projects/llvm/tools/lldb/source/Host/common/Editline.cpp:341:52: error: cannot initialize a parameter of type 'char *' with an rvalue of type 'const char *'
                            ::el_push (m_editline, lines[line_idx+1].c_str());
                                                   ^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/histedit.h:95:34: note: passing argument to parameter here
void el_push(EditLine *, char *);
                                           ^
/home/ono/Projects/llvm/tools/lldb/source/Host/common/Editline.cpp:357:52: error: cannot initialize a parameter of type 'char *' with an rvalue of type 'const char *'
                            ::el_push (m_editline, lines[line_idx-1].c_str());
                                                   ^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/histedit.h:95:34: note: passing argument to parameter here
void el_push(EditLine *, char *);
                                           ^
/home/ono/Projects/llvm/tools/lldb/source/Host/common/Editline.cpp:367:48: error: cannot initialize a parameter of type 'char *' with an rvalue of type 'const char *'
                        ::el_push (m_editline, lines[line_idx+1].c_str());
                                               ^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/histedit.h:95:34: note: passing argument to parameter here
void el_push(EditLine *, char *);
                                           ^
5 errors generated.

Cheers,

We’ve been using a configure-built libedit from here. We essentially build that with something like “configure --prefix=/usr/local/libedit/libedit-20130712-3.1 && make && sudo make install”.

We then run configure something like this:

export LIBEDIT_PATH=/usr/local/libedit/libedit-20130712-3.1
export LD_LIBRARY_PATH=<some_paths_to_gcc_4.8.2/lib64>:$LIBEDIT_PATH/lib:$LD_LIBRARY_PATH

assume …/llvm is the source tree: i.e. we’re in a build directory that parallels the source tree

configure …/llvm --enable-cxx11 --with-extra-option=-I$LIBEDIT_PATH/include --with-extra-ld-options=-L$LIBEDIT_PATH/lib --prefix=<some_install_path>

That’s what we’re doing now. We could consider breaking out the libedit parts to the 2008-libedit spec and adding configure/cmake checks for it. That might be a nice smallish project for somebody to knock out.

configure …/llvm --enable-cxx11 --with-extra-option=-I$LIBEDIT_PATH/include --with-extra-ld-options=-L$

That should be:

…/llvm/configure --enable-cxx11 --with-extra-option=-I$LIBEDIT_PATH/include --with-extra-ld-options=-L$LIBEDIT_PATH/lib --prefix=<some_install_path>

I just had a look at this build bot:

lldb-x86_64-linux

The latest build I looked at here appears to be failing because it doesn’t have libedit installed. As we mentioned above, it will need a newer libedit since we are currently using features that don’t appear to be in older versions of the library and we’re not doing anything to distinguish that at the moment.

We had run into the same issue with editline.
You can try using this patch to fix the issue with the editline versions.

Thanks,
Deepak

editlinepatch (2.95 KB)