Bitkeeper without X Libraries


Hello everyone,
I compiled bitkeeper successfully.
However I noted the dependencies on some x11 libraries.
Since I run a bitkeeper deamon on a headless minimal debian server I try to run the system with minimal package installation.
This is especially very important in case of distribution updates.

Would it be possible to compile bitkeeper without libxft2-dev and additional x dependencies, what is the library used for? Is it used withing the command line tools?

I would really like a make option, which only compiles the bk executable and the required command line tools.
Is this already present?


Yeah, that is caused because a few pieces of the command line version of bk use the L language. That is part of Tcl/Tk that is built with bk. We would need to either remove the L dependence or fix the tcl build so it only links libxf2 to the Tk library.

You might mess with src/gui/tcltk/tcl/Makefile


BTW when I build on Ubuntu this is the resulting binary:

$ ldd bk =>  (0x00007fffa01e9000) => /usr/lib/x86_64-linux-gnu/ (0x00007f3f4a360000) => /usr/lib/x86_64-linux-gnu/ (0x00007f3f4a147000) => /lib/x86_64-linux-gnu/ (0x00007f3f49ed4000) => /usr/lib/x86_64-linux-gnu/ (0x00007f3f49cbc000) => /lib/x86_64-linux-gnu/ (0x00007f3f49aa0000) => /lib/x86_64-linux-gnu/ (0x00007f3f496d7000) => /usr/lib/x86_64-linux-gnu/ (0x00007f3f49457000) => /lib/x86_64-linux-gnu/ (0x00007f3f49239000)
        /lib64/ (0x0000559073fd5000)

I don’t see xft here.


I suspect I didn’t understand properly. You just want a build option to ONLY build bk and not the Tk portions of the build.

Because the normal build process also builds this:

 $ ldd ./gui/bin/bkgui =>  (0x00007fff4549a000) => /lib/x86_64-linux-gnu/ (0x00007f9e7406a000) => /usr/lib/x86_64-linux-gnu/ (0x00007f9e73e55000) => /usr/lib/x86_64-linux-gnu/ (0x00007f9e73c12000) => /usr/lib/x86_64-linux-gnu/ (0x00007f9e738d9000) => /lib/x86_64-linux-gnu/ (0x00007f9e736d5000) => /lib/x86_64-linux-gnu/ (0x00007f9e734b7000) => /lib/x86_64-linux-gnu/ (0x00007f9e731ae000) => /lib/x86_64-linux-gnu/ (0x00007f9e72f3b000) => /lib/x86_64-linux-gnu/ (0x00007f9e72b74000)
        /lib64/ (0x0000563744447000) => /usr/lib/x86_64-linux-gnu/ (0x00007f9e728c7000) => /usr/lib/x86_64-linux-gnu/ (0x00007f9e726bd000) => /lib/x86_64-linux-gnu/ (0x00007f9e72491000) => /usr/lib/x86_64-linux-gnu/ (0x00007f9e7226f000) => /usr/lib/x86_64-linux-gnu/ (0x00007f9e7203d000) => /usr/lib/x86_64-linux-gnu/ (0x00007f9e71e39000) => /usr/lib/x86_64-linux-gnu/ (0x00007f9e71c33000)

and we don’t provide a build target to avoid building the GUI code.


Exactly the latter one. A build target who does not build the tk part of bitkeeper, that would be more than enough for me. (0x00007ffc12796000) => /usr/lib/x86_64-linux-gnu/ (0x00007fa230271000) => /usr/lib/x86_64-linux-gnu/ (0x00007fa230057000) => /lib/x86_64-linux-gnu/ (0x00007fa22fde4000) => /usr/lib/x86_64-linux-gnu/ (0x00007fa22fbd2000) => /lib/x86_64-linux-gnu/ (0x00007fa22f9b8000) => /lib/x86_64-linux-gnu/ (0x00007fa22f619000) => /usr/lib/x86_64-linux-gnu/ (0x00007fa22f396000) => /lib/x86_64-linux-gnu/ (0x00007fa22f179000)
/lib64/ (0x00007fa23091c000)

this is what it get for ldd bk. In theory one could seperate the build target to bk and the other target for building x11 related stuff.
I am not that deep into the bk sourcecode, so it may work or it may not work.
Thanks for the fast reply.