From 6b0b466585ea1e74f51d94dc0933f90f03366253 Mon Sep 17 00:00:00 2001 From: Thiago de Arruda Date: Sat, 1 Feb 2014 11:20:02 -0300 Subject: [PATCH] Automate libuv download and build --- .gitignore | 2 ++ Makefile | 18 ++++++++++++++---- scripts/common.sh | 37 +++++++++++++++++++++++++++++++++++++ scripts/get-libuv.sh | 16 ++++++++++++++++ 4 files changed, 69 insertions(+), 4 deletions(-) create mode 100644 scripts/common.sh create mode 100644 scripts/get-libuv.sh diff --git a/.gitignore b/.gitignore index d87a317eea..5872fd9386 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,6 @@ build/ +.deps/ + *.rej *.orig *.mo diff --git a/Makefile b/Makefile index 4bdfaa39aa..7b3611abf0 100644 --- a/Makefile +++ b/Makefile @@ -3,12 +3,22 @@ CMAKE_FLAGS := -DCMAKE_BUILD_TYPE=Debug test: build/src/vim cd src/testdir && make -build/src/vim: +build/src/vim: deps cd build && make -cmake: - rm -rf build +deps: .deps/usr/lib/libuv.a + +.deps/usr/lib/libuv.a: + sh -e scripts/get-libuv.sh + +cmake: clean mkdir build cd build && cmake $(CMAKE_FLAGS) ../ -.PHONY: test cmake +clean: + rm -rf build + for file in lua mbyte mzscheme small tiny; do \ + rm -f src/testdir/$$file.vim; \ + done + +.PHONY: test deps cmake diff --git a/scripts/common.sh b/scripts/common.sh new file mode 100644 index 0000000000..d7653c6aa1 --- /dev/null +++ b/scripts/common.sh @@ -0,0 +1,37 @@ +pkgroot="$(pwd)" +deps="$pkgroot/.deps" +prefix="$deps/usr" +export PATH="$prefix/bin:$PATH" + +download() { + local url=$1 + local tgt=$2 + local sha1=$3 + + if [ ! -d "$tgt" ]; then + mkdir -p "$tgt" + if which wget > /dev/null 2>&1; then + tmp_dir=$(mktemp -d "/tmp/download_sha1check_XXXXXXX") + fifo="$tmp_dir/fifo" + mkfifo "$fifo" + # download, untar and calculate sha1 sum in one pass + (wget "$url" -O - | tee "$fifo" | \ + (cd "$tgt"; tar --strip-components=1 -xvzf -)) & + sum=$(sha1sum < "$fifo" | cut -d ' ' -f1) + rm -rf "$tmp_dir" + if [ "$sum" != "$sha1" ]; then + echo "SHA1 sum doesn't match, expected '$sha1' got '$sum'" + exit 1 + fi + else + echo "Missing wget utility" + exit 1 + fi + fi +} + +github_download() { + local repo=$1 + local ver=$2 + download "https://github.com/${repo}/archive/${ver}.tar.gz" "$3" "$4" +} diff --git a/scripts/get-libuv.sh b/scripts/get-libuv.sh new file mode 100644 index 0000000000..e7001ef3a0 --- /dev/null +++ b/scripts/get-libuv.sh @@ -0,0 +1,16 @@ +. scripts/common.sh + +uv_repo=joyent/libuv +uv_ver=v0.11.19 +uv_dir="$deps/uv-$uv_ver" +uv_sha1=5539d8e99e22b438cf4a412d4cec70ac6bb519fc + +rm -rf "$uv_dir" + +github_download "$uv_repo" "$uv_ver" "$uv_dir" "$uv_sha1" +cd "$uv_dir" +sh autogen.sh +./configure --prefix="$prefix" +make +make install +rm "$prefix/lib/"libuv*.so "$prefix/lib/"libuv*.so.*