Bazel should create static binaries

Assigned To
Blocked By
Restricted Maniphest Task
Differential Revisions
Restricted Differential Revision
shahms, schroederc, juanch and 2 others

Most of our Go binaries currently rely on the system's leveldb and snappy shared libraries. We should link in //third_party/leveldb and //third_party/snappy, respectively.

Some of our C++ binaries are also dynamically linked.

schroederc created this task.Via WebMay 11 2015, 12:30 PM
schroederc claimed this task.
schroederc lowered the priority of this task from "High" to "Low".Via WebMay 11 2015, 1:51 PM
schroederc added a comment.Via WebMay 14 2015, 11:45 AM

Our C++ extractor also is dynamically linked.

$ ldd cxx_extractor =>  (0x00007ffdc86ba000) => /lib/x86_64-linux-gnu/ (0x00007ff048375000) => /lib/x86_64-linux-gnu/ (0x00007ff047f9a000) => /lib/x86_64-linux-gnu/ (0x00007ff047d95000) => /lib/x86_64-linux-gnu/ (0x00007ff047b72000) => /lib/x86_64-linux-gnu/ (0x00007ff047949000) => /lib/x86_64-linux-gnu/ (0x00007ff047642000) => /lib/x86_64-linux-gnu/ (0x00007ff047424000) => /usr/lib/x86_64-linux-gnu/ (0x00007ff047120000) => /lib/x86_64-linux-gnu/ (0x00007ff046f09000) => /lib/x86_64-linux-gnu/ (0x00007ff046b44000)
        /lib64/ (0x00007ff04859e000)
schroederc edited the task description. (Show Details)Via WebMay 14 2015, 11:45 AM
schroederc added a subscriber: zarko.
schroederc added a blocking task: Restricted Maniphest Task.Via WebMay 19 2015, 3:04 PM
schroederc added a comment.Via WebMay 21 2015, 11:51 AM

See for more content on statically linking Go. It's more of a pain than may be worth it.

schroederc removed a blocked task: Restricted Maniphest Task.Via WebMay 27 2015, 1:58 PM
schroederc added a revision: Restricted Differential Revision.Via WebJun 15 2015, 10:28 AM
schroederc closed blocking task Restricted Maniphest Task as "Resolved".Via WebJun 15 2015, 10:37 AM
schroederc changed the visibility of this Maniphest Task from "All Users" to "Public (No Login Required)".Via WebMay 16 2016, 3:30 PM
schroederc placed this task up for grabs.Via WebJun 13 2016, 12:23 PM
schroederc lowered the priority of this task from "Low" to "Wishlist".
schroederc removed a subscriber: zarko.
schroederc merged a task: Restricted Maniphest Task.
juanch added a comment.EditedVia WebMay 31 2017, 4:14 PM

Any chance to bump the priority of this task higher? It's in the critical path of running Kythe on our side. For the near term, we need C++ and Java. Go can be ready later.

fromberger raised the priority of this task from "Wishlist" to "Normal".Via WebMay 31 2017, 4:19 PM

I don't know how we'll actually do this—does Bazel already support static linking, or is this going to be some kind of manual process?

fromberger added a comment.Via WebMay 31 2017, 4:21 PM

Re: Java. Is static linking even a thing for Java? I suppose you could do a shell-archive trick, but doesn't the JVM always load its extensions dynamically?

zarko claimed this task.Via WebMay 31 2017, 4:24 PM

I'm not sure what it means to statically-link Java, but I can look into C++.

juanch added a comment.Via WebMay 31 2017, 4:46 PM

Bazel c++ rules have options for static linking ( Hope that is enough.

The work I can think of for Java may be to include all the jars Kythe needs in the release.

zarko added a comment.Via WebMay 31 2017, 5:26 PM

As we've discovered, the indexer/extractor will build with linkopts=["-static"], but the resulting binaries die during initialization:

#0  0x00000000013aa1fb in raise ()
#1  0x0000000001410958 in abort ()
#2  0x000000000140501d in uw_init_context_1 ()
#3  0x0000000001405bc8 in _Unwind_Backtrace ()
#4  0x0000000001336c0f in google::StackTraceInit::StackTraceInit() ()
#5  0x00000000004069b0 in __cxx_global_var_init17 ()
#6  0x00000000004069ec in ()
#7  0x0000000001408367 in __libc_csu_init ()
#8  0x0000000001407df9 in __libc_start_main ()
#9  0x0000000000407d67 in _start ()
shahms added a subscriber: shahms.Via WebWed, Jun 13, 9:33 AM

Bulk reassignment prior to migration, feel free to give to someone else.

Add Comment