Skip to content

Commit

Permalink
Reduce the amount of make output and speed up the build
Browse files Browse the repository at this point in the history
The build logs were going over 4MB so Travis was failing the
build. Now building the dependencies only produces output if the build fails.
  • Loading branch information
joelarmstrong committed Feb 11, 2017
1 parent 30cd894 commit f0b39ce
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 57 deletions.
5 changes: 3 additions & 2 deletions Dockerfile
@@ -1,13 +1,14 @@
FROM ubuntu:16.04


RUN apt-get update && apt-get install -y git gcc g++ build-essential python-dev zlib1g-dev libkyototycoon-dev libtokyocabinet-dev libkyotocabinet-dev wget valgrind libbz2-dev

ENV kyotoTycoonIncl -I/usr/include -DHAVE_KYOTO_TYCOON=1 -fpermissive
ENV kyotoTycoonLib -L/usr/lib -Wl,-rpath,/usr/lib -lkyototycoon -lkyotocabinet -lz -lbz2 -lpthread -lm -lstdc++
RUN mkdir -p /home/cactus

COPY . /home/cactus

RUN cd /home/cactus && make deps
RUN cd /home/cactus && make

RUN mkdir /data
WORKDIR /data
81 changes: 28 additions & 53 deletions Makefile
Expand Up @@ -9,20 +9,6 @@ runtime_fullpath = $(realpath runtime)

export sonLibRootPath = ${PWD}/submodules/sonLib

libtokyocabinet = ${PWD}/submodules/tokyocabinet/libtokyocabinet.a
libkyototycoon = ${PWD}/submodules/kyototycoon/libkyototycoon.a
libkyotocabinet = ${PWD}/submodules/kyotocabinet/libkyotocabinet.a


export tcPrefix = $(PWD)/submodules/tokyocabinet
export tokyoCabinetIncl = -I ${tcPrefix}/include -DHAVE_TOKYO_CABINET=1
export tokyoCabinetLib = -L${tcPrefix}/lib -Wl,-Bstatic -ltokyocabinet -Wl,-Bdynamic -lz -lpthread -lm

export kcPrefix =$(PWD)/submodules/kyotocabinet
export ttPrefix =$(PWD)/submodules/kyototycoon
export kyotoTycoonIncl = -I${kcPrefix}/include -I${ttPrefix}/include -DHAVE_KYOTO_TYCOON=1 -I$(PWD)/zlib/include -fpermissive
export kyotoTycoonLib = -L${ttPrefix}/lib -L${kcPrefix}/lib -Wl,-Bstatic -lkyototycoon -lkyotocabinet -Wl,-Bdynamic -lz -lpthread -lm -lstdc++

libSonLib = ${PWD}/submodules/sonLib/sonLib.a
libPinchesAndCacti = ${PWD}/submodules/sonLib/lib/stPinchesAndCacti.a
libCPecan = ${PWD}/submodules/sonLib/lib/cPecanLib.a
Expand All @@ -31,15 +17,16 @@ libMatchingAndOrdering = ${PWD}/submodules/sonLib/lib/matchingAndOrdering.a
halAppendCactusSubtree = ${PWD}/submodules/cactus2hal/bin/halAppendCactusSubtree
h5c++ = ${PWD}/submodules/hdf5/bin/h5c++

.PHONY: all %.all clean %.clean

all : ${libSonLib} ${libPinchesAndCacti} ${libMatchingAndOrdering} ${libCPecan} ${modules:%=all.%} ${halAppendCactusSubtree}
.PHONY: all all.% clean clean.% selfClean

all: deps ${modules:%=all.%} ${halAppendCactusSubtree}

all.%:
cd $* && make all

clean: ${modules:%=clean.%}
deps: ${libSonLib} ${libPinchesAndCacti} ${libMatchingAndOrdering} ${libCPecan} hdf5Rule halRule

selfClean: ${modules:%=clean.%}
rm -rf lib/*.h bin/*.dSYM

clean.%:
Expand All @@ -48,7 +35,6 @@ clean.%:
test: all
python allTests.py


build_output: Dockerfile
mkdir -p ${runtime_fullpath}/tools
docker build -t cactusbuild:${tag} .
Expand All @@ -58,63 +44,52 @@ build_output: Dockerfile
docker rmi -f cactusbuild:${tag}

docker: build_output runtime/Dockerfile
docker rmi -f ${name}:latest
-docker rmi -f ${name}:latest
docker build -t ${name}:${tag} ./runtime/ --build-arg CACTUS_COMMIT=${git_commit}
docker tag ${name}:${tag} ${name}:latest

push: docker
# Requires ~/.dockercfg
docker push ${name}


${libSonLib}: ${libkyotocabinet} ${libtokyocabinet} ${libkyototycoon}
cd ${PWD}/submodules/sonLib && make
${libSonLib}:
@echo "Building dependency sonLib"
@cd ${PWD}/submodules/sonLib && (output=$$(make 2>&1) || (echo "$$output"; exit 1))

sonLibRule: ${libSonLib}

tokyocabinetRule: ${libtokyocabinet}

kyototycoonRule: ${libkyototycoon}

kyotocabinetRule: ${libkyotocabinet}

${libtokyocabinet}:
cd ${PWD}/submodules/tokyocabinet && ./configure --prefix=${PWD}/submodules/tokyocabinet --enable-static --disable-shared --disable-bzip && make && make install

${libkyototycoon}:
cd ${PWD}/submodules/kyototycoon && ./configure --prefix=${PWD}/submodules/kyototycoon --enable-static --disable-shared --with-kc=${PWD}/submodules/kyotocabinet && make && make install

${libkyotocabinet}:
cd ${PWD}/submodules/kyotocabinet && ./configure --prefix=${PWD}/submodules/kyotocabinet --enable-static --disable-shared && make && make install


${libPinchesAndCacti}:
cd ${PWD}/submodules/pinchesAndCacti && make
${libPinchesAndCacti}: ${libSonLib}
@echo "Building dependency pinchesAndCacti"
@cd ${PWD}/submodules/pinchesAndCacti && (output=`make 2>&1` || (echo "$$output"; exit 1))

${libMatchingAndOrdering}:
cd ${PWD}/submodules/matchingAndOrdering && make
${libMatchingAndOrdering}: ${libSonLib}
@echo "Building dependency matchingAndOrdering"
@cd ${PWD}/submodules/matchingAndOrdering && (output=`make 2>&1` || (echo "$$output"; exit 1))

${libCPecan}:
cd ${PWD}/submodules/cPecan && make
${libCPecan}: ${libSonLib}
@echo "Building dependency cPecan"
@cd ${PWD}/submodules/cPecan && (output=`make 2>&1` || (echo "$$output"; exit 1))

${halAppendCactusSubtree}: ${h5c++} halRule
cd ${PWD}/submodules/cactus2hal && PATH=${PWD}/submodules/hdf5/bin:$(PATH) make
${halAppendCactusSubtree}: ${h5c++} halRule all.api
@echo "Building dependency cactus2hal"
@cd ${PWD}/submodules/cactus2hal && (PATH=${PWD}/submodules/hdf5/bin:$(PATH) output=`make 2>&1` || (echo "$$output"; exit 1))

hdf5Rule: ${h5c++}

${h5c++}:
cd ${PWD}/submodules/hdf5 &&./configure --prefix=$(PWD)/submodules/hdf5 --enable-cxx && CFLAGS=-std=c99 make -e && make install
@echo "Building dependency hdf5"
@cd ${PWD}/submodules/hdf5 && (output=`(./configure --prefix=$(PWD)/submodules/hdf5 --enable-cxx && CFLAGS=-std=c99 make -e && make install) 2>&1` || (echo "$$output"; exit 1))

halRule:
cd ${PWD}/submodules/hal && PATH=${PWD}/submodules/hdf5/bin:$(PATH) make
halRule: ${h5c++} ${libSonLib}
@echo "Building dependency hal"
@cd ${PWD}/submodules/hal && (PATH=${PWD}/submodules/hdf5/bin:$(PATH) output=`make 2>&1` || (echo "$$output"; exit 1))

ucscClean:
make clean
ucscClean: selfClean
cd ${PWD}/submodules/sonLib && make clean
cd ${PWD}/submodules/pinchesAndCacti && make clean
cd ${PWD}/submodules/matchingAndOrdering && make clean

clean: ucscClean
clean: ucscClean selfClean
cd ${PWD}/submodules/kyotocabinet && make clean
cd ${PWD}/submodules/kyototycoon && make clean
cd ${PWD}/submodules/tokyocabinet && make clean
Expand Down
4 changes: 2 additions & 2 deletions include.mk
Expand Up @@ -6,10 +6,10 @@ libPath=${rootPath}lib/
sonLibRootPath?=${rootPath}/../sonLib
sonLibPath=${sonLibRootPath}/lib

include ${sonLibRootPath}/include.mk
include ${sonLibRootPath}/include.mk

dataSetsPath=/Users/benedictpaten/Dropbox/Documents/work/myPapers/genomeCactusPaper/dataSets

cflags += -I ${sonLibPath} ${tokyoCabinetIncl} ${kyotoTycoonIncl} ${mysqlIncl} ${pgsqlIncl}
cflags += -I ${sonLibPath}
basicLibs = ${sonLibPath}/sonLib.a ${sonLibPath}/cuTest.a ${dblibs}
basicLibsDependencies = ${sonLibPath}/sonLib.a ${sonLibPath}/cuTest.a

0 comments on commit f0b39ce

Please sign in to comment.