diff --git a/tools/build/makeshorewall b/tools/build/makeshorewall new file mode 100644 index 000000000..1f9fd71ed --- /dev/null +++ b/tools/build/makeshorewall @@ -0,0 +1,464 @@ +#!/bin/sh +# +# Shorewall Release Processing -- (C) 2003,2004,2005 -- Tom Eastep (teastep@shorewall.net) +# +# This program is under GPL [http://www.gnu.org/copyleft/gpl.htm] +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of Version 2 of the GNU General Public License +# as published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA +# +# I install this script in /usr/local/bin/makeshorewall. +# +# Usage: +# +# makeshorewall [ -trhxl ] [ ] +# +# -t Build tarball +# -r Build RPM +# -h Build HTML documentation +# -x Build XML documentation +# -l Build LRP +# +# If no options are given, all options are assumed. +# +# If is given, a patch file reflecting the differences +# between that version and the current version ( ) is +# generated. The directory ./shorewall- must exist and +# contain the version against which the patch is generated. +################################################################################ +# C O N F I G U R A T I O N +################################################################################ +# +# XSL Stylesheet to use for XML->HTML conversion +# +STYLESHEET=/usr/share/xml/docbook/stylesheet/nwalsh/current/xhtml/docbook.xsl +# +# Directory where the build log will be placed. The log has the name +# shorewall_build_.log +# +LOGDIR=/root +# +# Your RPM build directory +# +RPMDIR=/usr/src/packages +# +# Directory where you want the release to be built +# +DIR=$PWD +################################################################################ +# V A R I A B L E S +################################################################################ +VERSION= +OLDVERSION= +SHOREWALLDIR= +SOURCEDIR= +LRPPROJ= +LRPDIR= +LRP= +CVSPROJ= +CVSSTABLE= +XMLPROJ= +RPMNAME= +TARBALL= +LOGFILE= +HTMLDIR= +BUILDTARBALL= +BUILDRPM= +BUILDXML= +BUILDHTML= +BUILDLRP= +################################################################################ +# F U N C T I O N S +################################################################################ +progress_message() +{ + echo >> $LOGFILE + echo "$@" | tee -a $LOGFILE + echo >> $LOGFILE +} + +report() +{ + echo "$@" | tee -a $LOGFILE +} + +do_or_die() +{ + eval $@ || { progress_message "Step \"$*\" FAILED" ; exit 2; } +} + +fatal_error() { + progress_message "$*" + exit 2 +} + +list_search() # $1 = element to search for , $2-$n = list +{ + local e=$1 + + while [ $# -gt 1 ]; do + shift + [ "x$e" = "x$1" ] && return 0 + done + + return 1 +} + +usage() +{ + echo "usage: $(basename $0) [ -trhxl] [ ]" + exit 2 +} +################################################################################ +# E X E C U T I O N S T A R T S H E R E +################################################################################ +done= + +case $1 in + -*) + ;; + *) + BUILDTARBALL=Yes + BUILDRPM=Yes + BUILDHTML=Yes + BUILDXML=Yes + BUILDRPM=Yes + BUILDLRP=Yes + done=Yes + ;; +esac + +while [ -z "$done" ]; do + [ $# -eq 0 ] && break + + option=$1 + case $option in + -*) + option=${option#-} + + [ -z "$option" ] && break + + while [ -n "$option" ]; do + case $option in + t*) + BUILDTARBALL=Yes + option=${option#t} + ;; + r*) + BUILDRPM=Yes + option=${option#r} + ;; + h*) + BUILDHTML=Yes + option=${option#h} + ;; + x*) + BUILDXML=Yes + option=${option#x} + ;; + l*) + BUILDLRP=Yes + option=${option#l} + ;; + *) + usage + ;; + esac + done + shift + ;; + *) + done=Yes + ;; + esac +done + +case $# in + 1) + ;; + 2) + OLDVERSION=$2 + ;; + *) + usage + ;; +esac + +VERSION=$1 +LOGFILE=$LOGDIR/shorewall_build_${VERSION}.log + +touch $LOGFILE + +progress_message "Build of Shorewall $VERSION on $(date)" + +case $VERSION in + 2.0.*) + CVSPROJ=STABLE + XMLPROJ=Shorewall-docs + LRP=shorwall-${VERSION}.lrp + LRPPROJ=Lrp + ;; + 2.2.*) + CVSPROJ=STABLE2 + XMLPROJ=Shorewall-docs2 + LRP=shorewall-lrp-${VERSION}.tgz + LRPPROJ=Lrp2 + ;; + 2.3.*) + CVSPROJ=Shorewall2 + XMLPROJ=Shorewall-docs2 + BUILDLRP= + ;; + 2.4.*) + CVSPROJ=Shorewall2 + XMLPROJ=Shorewall-docs2 + BUILDLRP= + ;; + *) + echo "Unsupported Version: $VERSION" + exit 2 + ;; +esac + +[ -d $DIR ] || { echo "Directory $DIR does not exist or is unaccessible" ; exit 2 ; } + +progress_message "Distribution directory is $DIR" + +cd $DIR + +case $VERSION in + *Beta*|*RC*) + # + # Beta or Release Canditate + # + SHOREWALLDIR=shorewall-${VERSION%-*} + TARBALL=shorewall-${VERSION%-*}.tgz + RPMNAME=shorewall-${VERSION%-*}-0${VERSION#*-}.noarch.rpm + ;; + *) + # + # Normal Release + # + SHOREWALLDIR=shorewall-$VERSION + TARBALL=shorewall-$VERSION.tgz + RPMNAME=shorewall-${VERSION}-1.noarch.rpm + ;; +esac + +HTMLDIR=shorewall-docs-html-$VERSION +LRPDIR=shorewall-lrp-$VERSION + +if [ -n "${BUILDTARBALL}${BUILDRPM}" ]; then + report "Shorewall directory is $DIR/$SHOREWALLDIR" + report "CVS Project is $CVSPROJ" + [ -n "$BUILDTARBALL" ] && report "TARBALL is $TARBALL" + [ -n "$BUILDRPM" ] && report "RPM is $RPMNAME" +fi + +[ -n "$BUILDHTML" ] && report "HTML Directory is $HTMLDIR" +[ -n "$BUILDLRP" ] && report "LRP Directory is $LRPDIR" + +if [ -n "${BUILDTARBALL}${BUILDRPM}" ]; then + progress_message "Exporting $CVSPROJ from CVS..." + + rm -rf $SHOREWALLDIR + rm -rf $CVSPROJ + + do_or_die "cvs -d :pserver:anonymous@cvs.shorewall.net:/usr/local/cvs export -D now $CVSPROJ >> $LOGFILE 2>&1" + do_or_die mv $CVSPROJ $SHOREWALLDIR + + fgrep VERSION=$VERSION $SHOREWALLDIR/install.sh > /dev/null 2>&1 || fatal_error "install.sh has wrong version" + fgrep VERSION=$VERSION $SHOREWALLDIR/uninstall.sh > /dev/null 2>&1 || fatal_error "uninstall.sh has wrong version" + fgrep VERSION=$VERSION $SHOREWALLDIR/fallback.sh > /dev/null 2>&1 || fatal_error "fallback.sh has wrong version" + + if [ -n "$BUILDTARBALL" ]; then + progress_message "Creating $DIR/$TARBALL..." + do_or_die "tar -zcvf $TARBALL $SHOREWALLDIR >> $LOGFILE 2>&1" + fi + + if [ -n "$BUILDRPM" ]; then + progress_message "Building $RPMNAME..." + + do_or_die "rpmbuild -tb $TARBALL >> $LOGFILE 2>&1" + do_or_die cp -a $RPMDIR/RPMS/noarch/$RPMNAME . + fi +fi + +if [ -n "${BUILDXML}${BUILDHTML}" ]; then + progress_message "Exporting $XMLPROJ from CVS..." + + rm -rf $XMLPROJ + rm -rf shorewall-docs-xml-$VERSION + + do_or_die "cvs -d :pserver:anonymous@cvs.shorewall.net:/usr/local/cvs export -D now $XMLPROJ >> $LOGFILE 2>&1" + do_or_die mv $XMLPROJ shorewall-docs-xml-$VERSION + + rm -f shorewall-docs-xml-$VERSION/images/*.vsd + rm -f shorewall-docs-xml-$VERSION/images/~* + rm -f shorewall-docs-xml-$VERSION/images/*.JPG + rm -f shorewall-docs-xml-$VERSION/images/publish + rm -f shorewall-docs-xml-$VERSION/images/Thumbs.db + + if [ -n "$BUILDXML" ]; then + progress_message "Creating $DIR/shorewall-docs-xml-$VERSION.tgz..." + do_or_die "tar -zcvf shorewall-docs-xml-$VERSION.tgz shorewall-docs-xml-$VERSION >> $LOGFILE 2>&1" + fi + + if [ -n "$BUILDHTML" ]; then + progress_message "Building $HTMLDIR ..." + + rm -rf $HTMLDIR + + do_or_die mkdir $HTMLDIR + do_or_die mkdir $HTMLDIR/images + # + # The original HTML documents were created using MS FrontPage and used + # the .htm suffix. The remainder use the .html suffix. + # + HTMFILES=" + 6to4.htm + blacklisting_support.htm + configuration_file_basics.htm + CorpNetwork.htm + dhcp.htm + Documentation.htm + errata.htm + fallback.htm + FAQ.htm + GnuCopyright.htm + Install.htm + IPIP.htm + IPSEC.htm + kernel.htm + myfiles.htm + NAT.htm + ports.htm + PPTP.htm + ProxyARP.htm + quotes.htm + samba.htm + shorewall_extension_scripts.htm + shorewall_features.htm + shorewall_mirrors.htm + shorewall_prerequisites.htm + shorewall_quickstart_guide.htm + shorewall_setup_guide_fr.htm + shorewall_setup_guide.htm + Shorewall_sfindex_frame.htm + standalone.htm + starting_and_stopping_shorewall.htm + support.htm + three-interface.htm + traffic_shaping.htm + troubleshoot.htm + two-interface.htm + upgrade_issues.htm + VPN.htm + whitelisting_under_shorewall.htm" + + for file in shorewall-docs-xml-$VERSION/*.xml; do + a=$(basename $file) + b=${a%.*} + list_search $b.htm $HTMFILES && b=$b.htm || b=$b.html + f="shorewall-docs-html-$VERSION/$b" + + report "Converting $DIR/$file from XML to HTML ($DIR/$f) ..." + + do_or_die xsltproc --output $f --stringparam html.stylesheet html.css --stringparam ulink.target _self -param toc.section.depth 3 $STYLESHEET $file + done + + progress_message "Copying images to $DIR/$HTMLDIR/images ..." + + do_or_die cp -a shorewall-docs-xml-$VERSION/images/*.png $HTMLDIR/images + do_or_die cp -a shorewall-docs-xml-$VERSION/images/*.gif $HTMLDIR/images + do_or_die cp -a shorewall-docs-xml-$VERSION/images/*.jpg $HTMLDIR/images + do_or_die cp -a shorewall-docs-xml-$VERSION/*.css $HTMLDIR + + do_or_die ln -s Documentation_Index.html shorewall-docs-html-$VERSION/index.html + + progress_message "Creating $DIR/shorewall-docs-html-$VERSION.tgz ..." + + do_or_die "tar -zcvf shorewall-docs-html-$VERSION.tgz shorewall-docs-html-$VERSION >> $LOGFILE 2>&1" + fi +fi + +[ -n "$BUILDTARBALL" ] && case $VERSION in + *Beta*|*RC*) + # + # The original tarball created above didn't include the -Beta or -RC portion of the + # name in either the tarball name or the directory name. Create it here + # + progress_message "Creating $DIR/shorewall-$VERSION..." + + rm -rf shorewall-$VERSION + + do_or_die mv $SHOREWALLDIR shorewall-$VERSION + + progress_message "Creating $DIR/shorewall-${VERSION}.tgz ..." + + do_or_die "tar -zcvf shorewall-${VERSION}.tgz shorewall-$VERSION >> $LOGFILE 2>&1" + ;; +esac + +if [ -n "$BUILDLRP" ]; then + progress_message "Exporting $LRPPROJ from CVS ..." + + rm -rf $LRPDIR + rm -rf $LRPPROJ + + do_or_die "cvs -d :pserver:anonymous@cvs.shorewall.net:/usr/local/cvs export -D now $LRPPROJ >> $LOGFILE 2>&1" + do_or_die mv $LRPPROJ $LRPDIR + + cd $LRPDIR + + [ "$VERSION" = $(cat usr/share/shorewall/version) ] || fatal_error "$LRPPROJ has wrong version" + + rm -f var/lib/lrpkg/shorwall.version + + do_or_die ln -s ../../../usr/share/shorewall/version var/lib/lrpkg/shorwall.version + + [ -d var/lib/shorewall ] || do_or_die mkdir var/lib/shorewall + + do_or_die chmod 700 etc etc/init.d etc/shorewall sbin usr usr/share usr/share/shorewall var var/lib var/lib/lrpkg var/lib/shorewall + do_or_die chmod 600 etc/shorewall/* + do_or_die chmod 700 etc/init.d/shorewall + do_or_die chmod 700 sbin/shorewall + do_or_die chmod 600 usr/share/shorewall/* + do_or_die chmod 700 usr/share/shorewall/firewall + do_or_die chmod 600 var/lib/lrpkg/shorwall.help + do_or_die chmod 600 var/lib/lrpkg/shorwall.list + do_or_die chmod 600 var/lib/lrpkg/shorwall.conf + + case $VERSION in + 2.*) + [ -d etc/shorewall/start.d ] || do_or_die mkdir etc/shorewall/start.d + [ -d etc/shorewall/stop.d ] || do_or_die mkdir etc/shorewall/stop.d + do_or_die chmod 755 etc/shorewall/start.d + do_or_die chmod 755 etc/shorewall/stop.d + ;; + esac + + progress_message "Creating $DIR/$LRP ..." + + do_or_die "tar -zcvf ../$LRP $(cat var/lib/lrpkg/shorwall.list) >> $LOGFILE 2>&1" + + cd $DIR +fi + +if [ -n "$OLDVERSION" ]; then + progress_message "Creating patch-$VERSION ..." + + diff -Nau shorewall-$OLDVERSION shorewall-$VERSION > patch-$VERSION +fi + +progress_message "Shorewall $VERSION Build complete - $(date)" diff --git a/tools/build/publish b/tools/build/publish new file mode 100644 index 000000000..f0fad2ea3 --- /dev/null +++ b/tools/build/publish @@ -0,0 +1,53 @@ +#!/bin/sh + +#STYLESHEET=/home/teastep/Shorewall/docbook-xsl-1.62.4//xhtml/docbook.xsl +STYLESHEET=/usr/share/xml/docbook/stylesheet/nwalsh/current/xhtml/docbook.xsl +WEBSITE=/home/teastep/Shorewall/Website + +if [ $# -eq 0 ]; then + echo "Usage: $(basename $0) ..." + exit 2 +fi + +while [ $# -gt 0 ]; do + + case $1 in + *.xml) + b=${1%.*} + + if [ -f ../Website/$b.htm ]; then + b=$b.htm + f="$WEBSITE/$b" + else + b=$b.html + f="$WEBSITE/$b" + fi + + echo "Converting $1 from XML to HTML ($b) ..." + + if xmllint --valid --noout $1 && xsltproc --output $f --stringparam html.stylesheet html.css --stringparam ulink.target _self -param toc.section.depth 3 $STYLESHEET $1 ; then + filestocopy="$filestocopy $f" + fi + ;; + + *) + filestocopy="$filestocopy $1" + ;; + esac + + shift + +done + +if [ -n "$filestocopy" ]; then + for f in $filestocopy; do + filestoreport="$filestoreport $(basename $f)" + done + + echo "Copying$filestoreport to SourceForge..." + scp $filestocopy teastep@shorewall.sourceforge.net:/home/groups/s/sh/shorewall/htdocs > /dev/null + echo "Copying$filestoreport to Mail..." + scp -p $filestocopy root@mail:/var/www/html > /dev/null +fi + +