view logstash.Makefile @ 14:0e45fe64b10d

work on building from source
author Carl Byington <>
date Wed, 10 Apr 2013 21:24:14 -0700
parents c0150404962d
children c158cae7cd26
line wrap: on
line source

# fedora uses system jruby
# el6	 uses minimal jruby.jar
VERSION=$(shell awk -F\" '/LOGSTASH_VERSION/ {print $$2}' lib/logstash/version.rb)

SYSJRUBY=$(shell which jruby 2>/dev/null)
ifeq ($(SYSJRUBY),)
JRUBY_CMD=java -jar /usr/local/bin/jruby.jar

	echo '********** in my local makefile'

	# make the target directory to collect all the class files that will be in the final jar
	mkdir target

	# make the logstash jar
	# compile-grammer
	touch lib/logstash/config/grammar.rl	# force rebuild
	make -C lib/logstash/config grammar.rb
	# compile-runner
	mkdir -p build/ruby
	(cd lib; $(JRUBYC) -5 -t ../build/ruby logstash/runner.rb)
	# copy-ruby-files
	find ./lib	-name '*.rb' | sed -e 's,^\./lib/,,'  | (cd lib;  cpio -p --make-directories ../build/ruby)
	find ./test -name '*.rb' | sed -e 's,^\./test/,,' | (cd test; cpio -p --make-directories ../build/ruby)
	rsync -av ./spec build/ruby
	# install-gems
	mkdir -p vendor/bundle
	GEM_HOME=./vendor/bundle/jruby/1.9/ GEM_PATH= $(JRUBY_CMD) --1.9 ./gembag.rb logstash.gemspec
	rm -rf ./vendor/bundle/jruby/1.9/gems/riak-client-1.0.3/pkg
	rm -rf ./vendor/bundle/jruby/1.9/gems/*/spec
	rm -rf ./vendor/bundle/jruby/1.9/gems/*/test
	# build-monolith
	mkdir -p build/monolith/openssl build/monolith/jopenssl
	# unpack all jars
	find $$PWD/vendor/bundle -name '*.jar' | (cd build/monolith; xargs -n1 jar xf)
	# copy openssl/lib/shared folders/files to root of jar - need this for openssl to work with JRuby
	cp -r vendor/bundle/jruby/1.9/gems/jruby-openss*/lib/shared/openssl/*	build/monolith/openssl
	cp -r vendor/bundle/jruby/1.9/gems/jruby-openss*/lib/shared/jopenssl/*	build/monolith/jopenssl
	cp -r vendor/bundle/jruby/1.9/gems/jruby-openss*/lib/shared/openssl.rb	build/monolith/openssl.rb
	# purge any extra files we don't need in META-INF (like manifests and @# signature files)
	rm -f build/monolith/META-INF/*.LIST
	rm -f build/monolith/META-INF/*.MF
	rm -f build/monolith/META-INF/*.RSA
	rm -f build/monolith/META-INF/*.SF
	rm -f build/monolith/META-INF/NOTICE
	rm -f build/monolith/META-INF/NOTICE.txt
	rm -f build/monolith/META-INF/LICENSE
	rm -f build/monolith/META-INF/LICENSE.txt
	cp $(GEOIP) build/monolith/
	# build-monolith-jar
	jar cfe build/logstash-$(VERSION)-monolithic.jar logstash.runner \
		-C build/ruby .								 \
		-C build/monolith .							 \
		-C vendor/bundle/jruby/1.9 gems				 \
		-C vendor/bundle/jruby/1.9 specifications	 \
		-C lib logstash/web/public					 \
		-C lib logstash/certs						 \
		-C lib logstash/web/views					 \
	# see what we have
	unzip -t build/logstash-$(VERSION)-monolithic.jar >/tmp/log.mono.jar.txt
	sort /tmp/log.mono.jar.txt >/tmp/log.mono.jar.sort.txt