Bitkeeper without X Libraries


#1

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?


#2

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


#3

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

$ ldd bk
        linux-vdso.so.1 =>  (0x00007fffa01e9000)
        libtomcrypt.so.0 => /usr/lib/x86_64-linux-gnu/libtomcrypt.so.0 (0x00007f3f4a360000)
        libtommath.so.1 => /usr/lib/x86_64-linux-gnu/libtommath.so.1 (0x00007f3f4a147000)
        libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f3f49ed4000)
        liblz4.so.1 => /usr/lib/x86_64-linux-gnu/liblz4.so.1 (0x00007f3f49cbc000)
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f3f49aa0000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f3f496d7000)
        libgmp.so.10 => /usr/lib/x86_64-linux-gnu/libgmp.so.10 (0x00007f3f49457000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f3f49239000)
        /lib64/ld-linux-x86-64.so.2 (0x0000559073fd5000)

I don’t see xft here.


#4

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
        linux-vdso.so.1 =>  (0x00007fff4549a000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f9e7406a000)
        libXft.so.2 => /usr/lib/x86_64-linux-gnu/libXft.so.2 (0x00007f9e73e55000)
        libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007f9e73c12000)
        libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f9e738d9000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f9e736d5000)
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f9e734b7000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f9e731ae000)
        libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f9e72f3b000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f9e72b74000)
        /lib64/ld-linux-x86-64.so.2 (0x0000563744447000)
        libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f9e728c7000)
        libXrender.so.1 => /usr/lib/x86_64-linux-gnu/libXrender.so.1 (0x00007f9e726bd000)
        libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f9e72491000)
        libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f9e7226f000)
        libpng16.so.16 => /usr/lib/x86_64-linux-gnu/libpng16.so.16 (0x00007f9e7203d000)
        libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f9e71e39000)
        libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f9e71c33000)

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


#5

Exactly the latter one. A build target who does not build the tk part of bitkeeper, that would be more than enough for me.
linux-vdso.so.1 (0x00007ffc12796000)
libtomcrypt.so.0 => /usr/lib/x86_64-linux-gnu/libtomcrypt.so.0 (0x00007fa230271000)
libtommath.so.1 => /usr/lib/x86_64-linux-gnu/libtommath.so.1 (0x00007fa230057000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fa22fde4000)
liblz4.so.1 => /usr/lib/x86_64-linux-gnu/liblz4.so.1 (0x00007fa22fbd2000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fa22f9b8000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa22f619000)
libgmp.so.10 => /usr/lib/x86_64-linux-gnu/libgmp.so.10 (0x00007fa22f396000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fa22f179000)
/lib64/ld-linux-x86-64.so.2 (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.