You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datasketches.apache.org by GitBox <gi...@apache.org> on 2020/06/12 15:20:27 UTC

[GitHub] [incubator-datasketches-postgresql] csqjxiao edited a comment on issue #25: Cannot compile & install on Ubuntu 16.04

csqjxiao edited a comment on issue #25:
URL: https://github.com/apache/incubator-datasketches-postgresql/issues/25#issuecomment-643283619


   The datasketches library is the nighly build source directly cloned from github.
   
   I have installed llvm and clang from the official [LLVM APT Nightly Build](https://apt.llvm.org/). Basically, I use the following commands to install llvm and clang on my ubuntu 16.04.
   ```
   wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
   sudo apt-add-repository "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-6.0 main"
   sudo apt-add-repository "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-10 main"
   sudo apt-get update
   sudo apt-get install -y clang-3.8 lldb-3.8       ## default clange version of ubuntu
   sudo apt-get install -y llvm-3.8 llvm-3.8-dev llvm-3.8-runtime
   sudo apt-get install -y clang-6.0 lldb-6.0 lld-6.0      ## needed by postgresql
   sudo apt-get install -y llvm-6.0 llvm-6.0-dev llvm-6.0-runtime llvm-6.0-tools
   sudo apt-get install -y clang-10 lldb-10 lld-10        ## needed by datasketches-postgresql
   sudo apt-get install -y llvm-10 llvm-10-dev llvm-10-runtime llvm-10-tools
   sudo apt-get upgrade
   ```
   
   I find that llvm-6.0 will have problem to compile and install the code.
   ```
   $ cd '/usr/lib/postgresql/12/lib/bitcode' && sudo /usr/lib/llvm-6.0/bin/llvm-lto -thinlto -thinlto-action=thinlink -o datasketches.index.bc datasketches/src/global_hooks.bc datasketches/src/base64.bc datasketches/src/common.bc datasketches/src/kll_float_sketch_pg_functions.bc datasketches/src/kll_float_sketch_c_adapter.bc datasketches/src/cpc_sketch_pg_functions.bc datasketches/src/cpc_sketch_c_adapter.bc datasketches/src/theta_sketch_pg_functions.bc datasketches/src/theta_sketch_c_adapter.bc datasketches/src/frequent_strings_sketch_pg_functions.bc datasketches/src/frequent_strings_sketch_c_adapter.bc datasketches/src/hll_sketch_pg_functions.bc datasketches/src/hll_sketch_c_adapter.bc
   error: can't create module summary index for buffer: Expected a single module
   LLVM ERROR: ThinLink didn't create an index
   ```
   But LLVM-10 can install without problem.
   ```
   cd '/usr/lib/postgresql/12/lib/bitcode' && sudo /usr/lib/llvm-10/bin/llvm-lto -thinlto -thinlto-action=thinlink -o datasketches.index.bc datasketches/src/global_hooks.bc datasketches/src/base64.bc datasketches/src/common.bc datasketches/src/kll_float_sketch_pg_functions.bc datasketches/src/kll_float_sketch_c_adapter.bc datasketches/src/cpc_sketch_pg_functions.bc datasketches/src/cpc_sketch_c_adapter.bc datasketches/src/theta_sketch_pg_functions.bc datasketches/src/theta_sketch_c_adapter.bc datasketches/src/frequent_strings_sketch_pg_functions.bc datasketches/src/frequent_strings_sketch_c_adapter.bc datasketches/src/hll_sketch_pg_functions.bc datasketches/src/hll_sketch_c_adapter.bc
   ```
   
   Do you happen to know how to set the default LLVM version on Ubuntu to llvm-10? I hope to use the following shell command to do this job. But it didn't work.
   ```
   #!/usr/bin/env sh
   
   # llvm update function
   function register_clang_version {
       local version=$1
       local priority=$2
   
       update-alternatives \
           --install /usr/bin/llvm-config       llvm-config      /usr/bin/llvm-config-${version} ${priority} \
           --slave   /usr/bin/llvm-lto          llvm-lto         /usr/bin/llvm-lto-${version} \
           --slave   /usr/bin/llvm-ar           llvm-ar          /usr/bin/llvm-ar-${version} \
           --slave   /usr/bin/llvm-as           llvm-as          /usr/bin/llvm-as-${version} \
           --slave   /usr/bin/llvm-bcanalyzer   llvm-bcanalyzer  /usr/bin/llvm-bcanalyzer-${version} \
           --slave   /usr/bin/llvm-cov          llvm-cov         /usr/bin/llvm-cov-${version} \
           --slave   /usr/bin/llvm-diff         llvm-diff        /usr/bin/llvm-diff-${version} \
           --slave   /usr/bin/llvm-dis          llvm-dis         /usr/bin/llvm-dis-${version} \
           --slave   /usr/bin/llvm-dwarfdump    llvm-dwarfdump   /usr/bin/llvm-dwarfdump-${version} \
           --slave   /usr/bin/llvm-extract      llvm-extract     /usr/bin/llvm-extract-${version} \
           --slave   /usr/bin/llvm-link         llvm-link        /usr/bin/llvm-link-${version} \
           --slave   /usr/bin/llvm-mc           llvm-mc          /usr/bin/llvm-mc-${version} \
           --slave   /usr/bin/llvm-nm           llvm-nm          /usr/bin/llvm-nm-${version} \
           --slave   /usr/bin/llvm-objdump      llvm-objdump     /usr/bin/llvm-objdump-${version} \
           --slave   /usr/bin/llvm-ranlib       llvm-ranlib      /usr/bin/llvm-ranlib-${version} \
           --slave   /usr/bin/llvm-readobj      llvm-readobj     /usr/bin/llvm-readobj-${version} \
           --slave   /usr/bin/llvm-rtdyld       llvm-rtdyld      /usr/bin/llvm-rtdyld-${version} \
           --slave   /usr/bin/llvm-size         llvm-size        /usr/bin/llvm-size-${version} \
           --slave   /usr/bin/llvm-stress       llvm-stress      /usr/bin/llvm-stress-${version} \
           --slave   /usr/bin/llvm-symbolizer   llvm-symbolizer  /usr/bin/llvm-symbolizer-${version} \
           --slave   /usr/bin/llvm-tblgen       llvm-tblgen      /usr/bin/llvm-tblgen-${version} \
           --slave   /usr/bin/lldb              lldb             /usr/bin/lldb-${version} \
           --slave   /usr/bin/lldb-server       lldb-server      /usr/bin/lldb-server-${version}        
   
   
       update-alternatives \
           --install /usr/bin/clang                 clang                 /usr/bin/clang-${version} ${priority}
           
           
       update-alternatives \
           --install   /usr/bin/clang++               clang++               /usr/bin/clang++-${version} ${priority}        
   }
   
   
   # Remove all existing alternatives
   sudo update-alternatives --remove-all llvm-config
   sudo update-alternatives --remove-all clang
   sudo update-alternatives --remove-all clang++
   
   # exit on first error
   set -e
   
   register_clang_version 3.8 100
   register_clang_version 6.0 600
   register_clang_version 10 1000
   ```


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datasketches.apache.org
For additional commands, e-mail: commits-help@datasketches.apache.org