include config.mk PROJECTS = FilePusher SysFsPusher CollectAgent ParastationProvider DISTFILES = thrift-0.9.0.tar.gz;https://dist.apache.org/repos/dist/release/thrift/0.9.0/thrift-0.9.0.tar.gz \ apache-cassandra-1.2.3.tar.gz;http://mirror.netcologne.de/apache.org/cassandra/1.2.3/apache-cassandra-1.2.3-bin.tar.gz \ mosquitto-1.1.3.tar.gz;http://mosquitto.org/files/source/mosquitto-1.1.3.tar.gz \ rudeconfig-5.0.5.tar.gz;http://rudeserver.com/config/download/rudeconfig-5.0.5.tar.gz \ boost_1_53_0.tar.gz;http://netcologne.dl.sourceforge.net/project/boost/boost/1.53.0/boost_1_53_0.tar.gz FETCH = wget -c --no-check-certificate -O - MAKETHREADS = 4 DISTFILESNAMES = $(foreach f,$(DISTFILES),$(shell echo "$(f)" | sed 's/;.*//')) DISTFILESPATHS = $(foreach f,$(DISTFILES),$(shell echo "$(f)" | sed 's/.tar.gz;.*//')) .PHONY : info all clean cleanall distclean $(PROJECTS) info: @echo "" @echo "DCDB - Data Center Database" @echo "Buildsystem description" @echo "" @echo "Use the DCDBDEPSPATH environment variable to specify a build path." @echo "Currently, the project will be built to:" @echo "$(DCDBDEPSPATH)" @echo "" @echo "Use the DCDBDEPLOYPATH environment variable to specifiy the path for deployment" @echo "of all tools. Currently, the directory for deployment/staging is:" @echo "$(DCDBDEPLOYPATH)" @echo "" @echo "There should only be a few requirements to build DCDB." @echo "On Ubuntu, these are: build-essential, cmake, libssl-dev" @echo "To run Cassandra, you should also have a JAVA runtime installed." @echo "" @echo "To start, please type:" @echo " make all" clean: @echo "Cleaning up... " @$(foreach p,$(PROJECTS),make -C $(p) clean;) cleanall: clean @cd $(DCDBDEPSPATH) && rm -f .prerequesites .extract-distfiles .download-distfiles @cd $(DCDBDEPSPATH) && rm -rf mosquitto_build @$(foreach f,$(DISTFILESPATHS),echo "Cleaning $(f)..." && rm -rf $(DCDBDEPSPATH)/$(f);) distclean: @echo "Wiping..." @rm -rf $(DCDBDEPSPATH) all: $(DCDBDEPSPATH)/.prerequesites make $(PROJECTS) $(DCDBDEPSPATH)/.prerequesites: $(DCDBDEPSPATH)/.extract-distfiles @echo "" @echo "Building Mosquitto library..." @mkdir -p $(DCDBDEPSPATH)/mosquitto_build $(eval M := $(shell echo "$(DISTFILESPATHS)" | sed 's/.*mosquitto/mosquitto/' | sed 's/\ .*//')) @cd $(DCDBDEPSPATH)/mosquitto_build && cmake -DWITH_TLS=OFF -DCMAKE_INSTALL_PREFIX:PATH=$(DCDBDEPLOYPATH)/ $(DCDBDEPSPATH)/$(M) && make -j $(MAKETHREADS) && make install @echo "" @echo "Building Rudeconfig library..." $(eval R := $(shell echo "$(DISTFILESPATHS)" | sed 's/.*rudeconfig/rudeconfig/' | sed 's/\ .*//')) @cd $(DCDBDEPSPATH)/$(R) && ./configure --prefix=$(DCDBDEPLOYPATH) && make -j $(MAKETHREADS) && chmod +x install-sh && make install @echo "" @echo "Building Boost..." $(eval B := $(shell echo "$(DISTFILESPATHS)" | sed 's/.*boost/boost/' | sed 's/\ .*//')) @cd $(DCDBDEPSPATH)/$(B) && ./bootstrap.sh --prefix=$(DCDBDEPLOYPATH) --with-libraries=atomic,chrono,date_time,exception,filesystem,program_options,thread,timer && ./b2 -j $(MAKETHREADS) install @echo "" @echo "Buidling Thrift..." $(eval T := $(shell echo "$(DISTFILESPATHS)" | sed 's/.*thrift/thrift/' | sed 's/\ .*//')) @cd $(DCDBDEPSPATH)/$(T) && ./configure --prefix=$(DCDBDEPLOYPATH) --without-qt4 --without-csharp \ --without-java --without-erlang --without-python --without-perl --without-php --without-php_extension \ --without-ruby --without-haskell --without-go --without-d --with-cpp --with-boost=$(DCDBDEPLOYPATH) && make && make install @echo "" @echo "Staging and configuring Cassandra..." @$(eval C := $(shell echo "$(DISTFILESPATHS)" | sed 's/.*apache-cassandra/apache-cassandra/' | sed 's/\ .*//')) @rsync -a $(DCDBDEPSPATH)/$(C)/ $(DCDBDEPLOYPATH)/cassandra @$(eval P := $(shell echo "$(DCDBDEPLOYPATH)" | sed 's/\//\\\//g')) @sed -i.original -e 's/\/var\/lib\/cassandra/$(P)\/var\/lib\/cassandra/g' $(DCDBDEPLOYPATH)/cassandra/conf/cassandra.yaml @sed -i.original -e 's/\/var\/log\/cassandra/$(P)\/var\/log\/cassandra/g' $(DCDBDEPLOYPATH)/cassandra/conf/log4j-server.properties @touch $(DCDBDEPSPATH)/.prerequesites $(DCDBDEPSPATH)/.extract-distfiles: $(foreach f,$(DISTFILESPATHS),$(DCDBDEPSPATH)/$(f)/.dirstamp) @touch $(DCDBDEPSPATH)/.extract-distfiles $(DCDBDEPSPATH)/.download-distfiles: $(foreach f,$(DISTFILESNAMES),$(DCDBDEPSPATH)/distfiles/$(f)) @touch $(DCDBDEPSPATH)/.download-distfiles $(DCDBDEPSPATH)/distfiles/%: @mkdir -p $(DCDBDEPSPATH)/distfiles $(eval F := $(shell echo "$@" | sed 's/.*\///')) $(eval FF := $(shell echo "$(DISTFILES)" | sed 's/.*$(F);//' | sed 's/ .*//')) @echo "Downloading $(FF) as $(F)..." @cd $(DCDBDEPSPATH)/distfiles && $(FETCH) $(FF) > $(F) $(DCDBDEPSPATH)/%/.dirstamp: $(DCDBDEPSPATH)/.download-distfiles $(eval F := $(shell echo "$@" | sed 's/\/.dirstamp//' | sed 's/.*\///')) @echo "Extracting $(F)..." @cd $(DCDBDEPSPATH) && tar xzf distfiles/$(F).tar.gz @touch $@ $(PROJECTS): $(DCDBDEPSPATH)/.prerequesites @echo "Building $@..." @$(MAKE) -C $@ @echo "Installing $@..." @$(MAKE) -C $@ install