diff --git a/Dockerfile b/Dockerfile index 854f7e918..b745f913d 100644 --- a/Dockerfile +++ b/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 diff --git a/Makefile b/Makefile index 76f47061a..387a524d6 100644 --- a/Makefile +++ b/Makefile @@ -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 @@ -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.%: @@ -48,7 +35,6 @@ clean.%: test: all python allTests.py - build_output: Dockerfile mkdir -p ${runtime_fullpath}/tools docker build -t cactusbuild:${tag} . @@ -58,7 +44,7 @@ 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 @@ -66,55 +52,44 @@ 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 diff --git a/include.mk b/include.mk index b619e2a39..672a6cc69 100644 --- a/include.mk +++ b/include.mk @@ -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