mirror of
				https://github.com/cldellow/sqlite-parquet-vtable.git
				synced 2025-11-04 02:39:56 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			108 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/bash
 | 
						|
set -euo pipefail
 | 
						|
 | 
						|
here=$(dirname "${BASH_SOURCE[0]}")
 | 
						|
here=$(readlink -f "$here")
 | 
						|
prebuilt="$here"/build/linux/prebuilt
 | 
						|
ubuntu="$(lsb_release -s -r)"
 | 
						|
libs=(libarrow.a libboost_filesystem.a libboost_regex.a libboost_system.a libbrotlicommon.a libbrotlidec.a \
 | 
						|
  libbrotlienc.a libicudata.a libicui18n.a libicuuc.a liblz4.a libparquet.a libsnappy.a libthrift.a libzstd.a)
 | 
						|
lib_locs=()
 | 
						|
 | 
						|
setup_directories() {
 | 
						|
  cd "$here"
 | 
						|
  mkdir -p build/linux
 | 
						|
  mkdir -p "$prebuilt"
 | 
						|
  cp -f build/Makefile.linux build/linux/Makefile
 | 
						|
  cd build/linux
 | 
						|
}
 | 
						|
 | 
						|
install_prerequisites() {
 | 
						|
  # Install prereqs based on https://github.com/apache/parquet-cpp#linux
 | 
						|
  sudo apt-get install libboost-dev g++ libboost-filesystem-dev \
 | 
						|
    libboost-program-options-dev libboost-regex-dev \
 | 
						|
    libboost-system-dev libboost-test-dev \
 | 
						|
    libssl-dev libtool bison flex pkg-config
 | 
						|
 | 
						|
  # Install prereqs based on https://github.com/apache/arrow/tree/master/cpp
 | 
						|
  sudo apt-get install cmake \
 | 
						|
    libboost-dev \
 | 
						|
    libboost-filesystem-dev \
 | 
						|
    libboost-system-dev
 | 
						|
}
 | 
						|
 | 
						|
build_sqlite() {
 | 
						|
  if [ ! -e ../../sqlite/sqlite3 ]; then
 | 
						|
    make sqlite
 | 
						|
  fi
 | 
						|
}
 | 
						|
 | 
						|
set_icu_version() {
 | 
						|
  case "$ubuntu" in
 | 
						|
    14.04)
 | 
						|
      export ICU_VERSION=52.1
 | 
						|
      ;;
 | 
						|
    16.04)
 | 
						|
      export ICU_VERSION=55.1
 | 
						|
      ;;
 | 
						|
    18.04)
 | 
						|
      export ICU_VERSION=60.2
 | 
						|
      ;;
 | 
						|
    *)
 | 
						|
    echo "unsure what libicu version to use" >&2
 | 
						|
    exit 1
 | 
						|
  esac
 | 
						|
 | 
						|
  export ICU_VERSION_U=${ICU_VERSION//./_}
 | 
						|
}
 | 
						|
 | 
						|
add_prebuilt_lib() {
 | 
						|
  lib_locs+=("$1=$prebuilt/$2.a")
 | 
						|
}
 | 
						|
 | 
						|
fetch_prebuilt_libs() {
 | 
						|
  for lib in "${libs[@]}"; do
 | 
						|
    if [ ! -e "$prebuilt/$lib" ]; then
 | 
						|
      echo "Fetching prebuilt $lib for Ubuntu $ubuntu"
 | 
						|
      curl "https://s3.amazonaws.com/cldellow/public/libparquet/$ubuntu/$lib" > tmp.a
 | 
						|
      mv tmp.a "$prebuilt"/$lib
 | 
						|
    fi
 | 
						|
  done
 | 
						|
 | 
						|
  add_prebuilt_lib "PARQUET_CPP_LIB" libparquet
 | 
						|
  add_prebuilt_lib "LZ4_LIB" liblz4
 | 
						|
  add_prebuilt_lib "ZSTD_LIB" libzstd
 | 
						|
  add_prebuilt_lib "THRIFT_LIB"  libthrift
 | 
						|
  add_prebuilt_lib "SNAPPY_LIB" libsnappy
 | 
						|
  add_prebuilt_lib "ARROW_LIB" libarrow
 | 
						|
  add_prebuilt_lib "ICU_I18N_LIB" libicui18n
 | 
						|
  add_prebuilt_lib "ICU_UC_LIB" libicuuc
 | 
						|
  add_prebuilt_lib "ICU_DATA_LIB" libicudata
 | 
						|
  add_prebuilt_lib "BROTLI_ENC_LIB" libbrotlienc
 | 
						|
  add_prebuilt_lib "BROTLI_COMMON_LIB" libbrotlicommon
 | 
						|
  add_prebuilt_lib "BROTLI_DEC_LIB" libbrotlidec
 | 
						|
  add_prebuilt_lib "BOOST_REGEX_LIB" libboost_regex
 | 
						|
  add_prebuilt_lib "BOOST_SYSTEM_LIB" libboost_system
 | 
						|
  add_prebuilt_lib "BOOST_FILESYSTEM_LIB" libboost_filesystem
 | 
						|
}
 | 
						|
 | 
						|
main() {
 | 
						|
  setup_directories
 | 
						|
  install_prerequisites
 | 
						|
  build_sqlite
 | 
						|
  set_icu_version
 | 
						|
 | 
						|
  if [ -v PREBUILT ]; then
 | 
						|
    fetch_prebuilt_libs
 | 
						|
  fi
 | 
						|
 | 
						|
  optimizations="-O3"
 | 
						|
  if [ -v COVERAGE ]; then
 | 
						|
    optimizations="-fprofile-arcs -ftest-coverage"
 | 
						|
  fi
 | 
						|
 | 
						|
  make ${lib_locs[@]-} "$@" OPTIMIZATIONS="$optimizations"
 | 
						|
}
 | 
						|
 | 
						|
main "$@"
 |