#!/bin/bash ##### # Builds a custom nginx # RELEASE_TAGS="+lua+$(lsb_release -s -c)" RELEASE_MAINTAINER= RELEASE_MAINTAINER_EMAIL= RELEASE_MESSAGE="Add LUA support to nginx" # ##### echo "[CMD] verifying dependencies" DEPS="debhelper libgd2-xpm-dev libgeoip-dev liblua5.1-0-dev libmhash-dev libpam0g-dev libperl-dev libxslt1-dev po-debconf dh-systemd libpcre3-dev libssl-dev" missing= for i in $DEPS ; do dpkg-query -W -f='${Package}\n' | grep ^$i$ > /dev/null if [ $? != 0 ] ; then missing="$missing $i" fi done if [ ! -z "$missing" ]; then echo "Missing dependencies, install the following:" echo "apt-get install$missing" exit 1 fi echo "[CMD] make a source directory and cd into it" mkdir src cd src echo "[CMD] get the source from debian/ubuntu" apt-get source nginx echo "[CMD] get the nginx version" nginx_version=`ls -lahF .|grep nginx|grep '^d[rwx-]\{9\} '| grep '\/$'|rev|cut -d' ' -f1 | rev|sed 's/nginx-//'|sed 's/\///'` echo "[CMD] retrieve all the nginx modules you want" cd "nginx-${nginx_version}/debian/modules" echo "[CMD] clone all the nginx modules from github" git clone -q git://github.com/zebrafishlabs/nginx-statsd.git git clone -q git://github.com/FRiCKLE/ngx_coolkit.git cd .. echo "[CMD] ensure the proper dependencies are in place" cat control | sed 's/libgd2-noxpm-dev/libgd2-xpm-dev/' >> tmp ; rm control ; mv tmp control echo "[CMD] remove unneeded and broken modules" cat rules |sed '/with-http_image_filter_module/ d' >> tmp ; rm rules ; mv tmp rules echo "[CMD] split up the rules file so we can rewrite it" awk '/\$\(CONFIGURE_OPTS\)/{n++}{filename = "rule-" n ; print > filename }' rules echo "[CMD] adding modules to the nginx-full package" echo -e "\t --add-module=\$(MODULESDIR)/headers-more-nginx-module \\" >> rule- echo -e "\t --add-module=\$(MODULESDIR)/nginx-development-kit \\" >> rule- echo -e "\t --add-module=\$(MODULESDIR)/nginx-lua \\" >> rule- echo -e "\t --add-module=\$(MODULESDIR)/nginx-statsd \\" >> rule- echo -e "\t --add-module=\$(MODULESDIR)/ngx_coolkit \\" >> rule- echo "[CMD] combine all the rule files" ls | grep rule- | while read file; do cat $file >> tmp; done; rm rules ; mv tmp rules echo "[CMD] get the current nginx minor nginx_version" minor_version=$(head -n 1 changelog | awk -F'[()]' '{print $2}' | awk -F'[-+~]' '{print $2}'); minor_version=$(($minor_version + 1)); echo "[CMD] get the current ubuntu release" ubuntu_release=$(head -n 1 changelog | sed -r 's/(.*) ([[:alpha:]]*)\;.*/\2/') echo "[CMD] get the current time for this release" release_time=$(date +"%a, %d %b %Y %I:%M:%S %z") echo "[CMD] update the changelog" echo -e "nginx (${nginx_version}-${minor_version}${RELEASE_TAGS}) ${ubuntu_release}; urgency=low [ ${RELEASE_MAINTAINER} ] * New release: ${RELEASE_MESSAGE} -- ${RELEASE_MAINTAINER} <${RELEASE_MAINTAINER_EMAIL}> ${release_time} "|cat - changelog > tmp && mv tmp changelog echo "[CMD] Create a build" cd .. dpkg-buildpackage echo "[CMD] DONE!"