kestes%staff.mail.com d66910c562 fix problem which occurs in with some redhat users.
git-svn-id: svn://10.0.0.236/trunk@84604 18797224-902f-48f8-a5cc-f745e15eee43
2001-01-08 22:36:21 +00:00

245 lines
6.3 KiB
Bash
Executable File

#!/bin/sh
# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/NPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Tinderbox build tool.
#
# The Initial Developer of the Original Code is Netscape Communications
# Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All
# Rights Reserved.
#
# complete rewrite by Ken Estes, Mail.com (kestes@staff.mail.com).
# Contributor(s):
destdir=/web/cgibins/cgi-forms/tinderbox
htmldir=/accts/kestes/htdocs/tinderbox
builddir=./build
config_script=./config.out
tinder_version='0.08'
perl_flags='-T'
# -------------------
# Build Makefile
# -------------------
/bin/echo "Building Makefile"
# build a makefile to copy our executables into place and perform
# subsitutions on them
#(cd src; find . -type f -print) | perl
( find ./src -type f -print) | \
egrep -v '/CVS/' | egrep -v '\#' | egrep -v '~' | \
perl \
-e "\$destdir = \"$destdir\";" \
-e "\$htmldir = \"$htmldir\";" \
-e "\$builddir = \"$builddir\";" \
-e "\$config_script=\"$config_script\";"\
-e '
use File::Basename;
# print Makefile Header
print <<EOF1;
# Makefile automatically generated by configure
# Do not edit this file
# files are processed by the perl script ./config.out as they are copied
# from the source tree to the build tree.
# files are installed without change from the build directory into the
# tree rooted at prefix.
# Makefile Variables
# ------------------
prefix=$destdir
builddir=$builddir
htmldir=$htmldir
config_script=$config_script
confdir=localconf
# Makefile Targets
# ----------------
all: build
ALL: all
build: mk_build_dirs build_files set_build_permissions
install: build mk_dest_dirs install_files
clean:
@ /bin/echo "\\n\\n-----Cleaning Build Directory-----\\n\\n"
rm -rf \$(builddir)
# We do not accidently wish to edit to the 'binary' version of these
# files so ensure the build dir copies are not writable.
set_build_permissions:
@ /bin/echo "\\n\\n-----Setting Build directory permissions-----\\n\\n"
find \$(builddir) -type f | xargs chmod 444
find \$(builddir)/bin -type f | xargs chmod 555
find \$(builddir)/test -type f -name 'gen*' | xargs chmod 555
find \$(builddir)/clientbin -type f | xargs chmod 555
compile_all_code: build
@ /bin/echo "\\n\\n-----Testing if perl can compile code-----\\n\\n"
find \$(builddir) -type f | \\
egrep -v -i "readme|\.gif|/test/|addimage.cgi|images.pm|bustagestats.cgi|Storable.pm" | \\
xargs -l perl -T -c
compile_bin_code: build
@ /bin/echo "\\n\\n-----Testing if perl can compile all files in the bin directory-----\\n\\n"
find \$(builddir)/bin -type f | \\
egrep -v -i "readme|\.gif|/test/|addimage.cgi|images.pm|bustagestats.cgi|Storable.pm" | \\
xargs -l perl -T -c
gen_test: compile_bin_code
rm -rf \$(htmldir)
perl \$(builddir)/test/genbuilds.tst
perl \$(builddir)/test/gennotices.tst
perl \$(builddir)/test/genbugs.tst
\$(builddir)/bin/tinder.cgi --daemon-mode
link_test:
find \$(builddir) -type f -print | \
egrep -v -i "test|mage" | \
xargs egrep -i "<a +href"
# Automated file list is generated after this line
# ------------------------------------------------
EOF1
;
while($_=<>) {
chomp $_;
my ($src_file) = $_;
my ($build_file) = $_;
my ($dest_file) = $_;
$build_file =~ s!\./src!\$\(builddir\)!;
$dest_file =~ s!\./src!\$\(prefix\)!;
$deps=<<EOF2;
build_files: $build_file
install_files: $dest_file
$build_file: $src_file Makefile config.out
@ if [ -f $build_file ]; then chmod +w $build_file; fi;
perl \$\(config_script\) < $src_file > $build_file;
@ chmod -w $build_file;
$dest_file: $build_file
@ if [ -f $dest_file ]; then chmod +w $dest_file; fi;
cp -p $build_file $dest_file
EOF2
;
$deps =~ s![ \t]+$!!mg;
$deps =~ s!^ +!!mg;
$deps =~ s!^\t\t+!\t!mg;
$dest_dirs{File::Basename::dirname($dest_file)} = 1;
$build_dirs{File::Basename::dirname($build_file)} = 1;
print $deps;
};
@dest_dirs = sort keys %dest_dirs;
@build_dirs = sort keys %build_dirs;
# print Makefile Footer
print <<EOF3;
DEST_DIRS = @dest_dirs
BUILD_DIRS = @build_dirs
mk_dest_dirs:
for D in \$(DEST_DIRS);do \\
mkdir -p \$\$D;\\
done
mk_build_dirs:
for D in \$(BUILD_DIRS);do \\
mkdir -p \$\$D;\\
done
EOF3
' > Makefile
# -------------------
# Build Config.out
# -------------------
/bin/echo "Building config.out"
rm -rf $config_script
pwd=`/bin/pwd`
/bin/echo "#!perl - this script is run from makefile with -n\n" >> $config_script
/bin/echo "# This script is automatically genareated by configure." >> $config_script
/bin/echo "# This script configures various global variables.\n" >> $config_script
/bin/echo "while (<>) {" >> $config_script
/bin/echo >> $config_script
/bin/echo " # Set the library search path with suitable interposing directories." >> $config_script
/bin/echo " s!\#tinder_libdir\#!$destdir/local_conf',\n '$destdir/default_conf',\n '$destdir/lib',\n '$pwd/$builddir/local_conf',\n '$pwd/$builddir/default_conf',\n '$pwd/$builddir/lib!;" >> $config_script
/bin/echo >> $config_script
/bin/echo " # Use Taint Perl mode for security." >> $config_script
/bin/echo " s!\#perlflags\#!$perl_flags!;" >> $config_script
/bin/echo " s!\#tinder_version\#!$tinder_version!;" >> $config_script
# some bash seems to not interpolate the '\n' I wish I understood what
# was going on here as MY bash does fine. I will leave this here
# commeted out until I figure out what is going on.
# /bin/echo "\n" >> $config_script
/bin/echo >> $config_script
/bin/echo " # Hard code various executable paths into the source for security reasons." >> $config_script
for cmd in perl
do
full_cmd=`which $cmd 2> /dev/null `
if [ $? -ne 0 ]; then
/bin/echo "Could not find program: $cmd"
exit 9;
fi
/bin/echo " s!\#$cmd\#!$full_cmd!;" >> $config_script
done
/bin/echo "} continue {" >> $config_script
/bin/echo " print or die \"-p destination: \$!\\\\n\";" >> $config_script
/bin/echo "}" >> $config_script
/bin/chmod +x $config_script
exit 0;