#!/usr/bin/env bash root=$(cd "$(dirname "$0")/.."; pwd) version=$(TZ=UTC date +v%Y%m%d) cd "$root/build/release" case $(uname -s) in Darwin) libclang=(lib/clang+llvm-*/lib/libclang.dylib) strip_option="-x" name=cquery-$version-x86_64-apple-darwin ;; FreeBSD) libclang=(lib/clang+llvm-*/lib/libclang.so.?) strip_option="-s" name=cquery-$version-x86_64-unknown-freebsd10 ;; Linux) libclang=(lib/clang+llvm-*/lib/libclang.so.?) strip_option="-s" name=cquery-$version-x86_64-unknown-linux-gnu ;; *) echo Unsupported >&2 exit 1 ;; esac pkg=$(mktemp -d) mkdir "$pkg/$name" rsync -rtLR bin "./${libclang[-1]}" ./lib/clang+llvm-*/lib/clang/*/include "$pkg/$name" cd "$pkg" strip "$strip_option" "$name/bin/cquery" "$name/${libclang[-1]}" case $(uname -s) in Darwin) # https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man1/tar.1.html # macOS's bsdtar is lack of flags to set uid/gid. # First, we generate a list of file in mtree format. tar -cf filelist --format=mtree --options="!all,time,mode,type" "$name" # Then add a line "/set uid=0 gid=0" after the first line "#mtree". awk '/#mtree/{print;print "/set uid=0 gid=0";next}1' filelist > newflielist # Finally, use the list to generate the tarball. tar -zcf "$root/build/$name.tar.gz" @newflielist ;; Linux) tar -Jcf "$root/build/$name.tar.xz" --owner 0 --group 0 $name ;; *) tar -Jcf "$root/build/$name.tar.xz" --uid 0 --gid 0 $name ;; esac rm -r "$pkg"