зеркало из https://github.com/mozilla/pjs.git
294 строки
7.8 KiB
Bash
Executable File
294 строки
7.8 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:
|
|
# kestes@staff.mail.com Old work.
|
|
# kestes@reefedge.com New work.
|
|
# kestes@walrus.com Home.
|
|
# Contributor(s):
|
|
|
|
|
|
# Users can set these variables or accept the defaults. These
|
|
# variables can either be set in configure (like in gnu configure) or
|
|
# overridden in the makefile.
|
|
|
|
# I do not wish to bother writing a command line parser in shell and
|
|
# configure can not easily be extended to handle other directories.
|
|
|
|
: ${prefix:=/home/tinderbox}
|
|
: ${cgibin_prefix:="/var/www/cgi-bin/tinderbox"}
|
|
: ${htmldir:="/home/httpd/html/tinderbox"}
|
|
|
|
: ${perl_flags:='-T'}
|
|
|
|
|
|
: ${builddir:=./build} > /dev/null
|
|
|
|
# Different versions of Unix have different requirements for echo. I
|
|
# have no intention of becoming a portable shell expert. Make the
|
|
# echo command a variable and let the users figure out what works for
|
|
# them.
|
|
|
|
# this is for statments which do not need '\n' interpolation
|
|
: ${echo:="/bin/echo"}
|
|
# this is for statements which need '\n' interpolation
|
|
: ${echoe:="/bin/echo -e"}
|
|
|
|
config_script='./config.out'
|
|
tinder_version='0.09'
|
|
|
|
|
|
# -------------------
|
|
# Build Makefile
|
|
# -------------------
|
|
|
|
$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 "\$prefix = '$prefix';" \
|
|
-e "\$cgibin_prefix = '$cgibin_prefix';"\
|
|
-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
|
|
# ------------------
|
|
|
|
|
|
# the prefix where most of the binaries will be install
|
|
prefix=$prefix
|
|
|
|
# the directory where the cgibin files must go
|
|
cgibin_prefix=$cgibin_prefix
|
|
|
|
# the root of the html directory
|
|
htmldir=$htmldir
|
|
|
|
# where files will be built before they are installed
|
|
builddir=$builddir
|
|
|
|
config_script=$config_script
|
|
confdir=localconf
|
|
|
|
# this is for statments which do not need '\'\\\\n\'' interpolation
|
|
echo=/bin/echo
|
|
|
|
# this is for statements which need '\'\\\\n\'' interpolation
|
|
echoe="/bin/echo -e"
|
|
|
|
|
|
# Makefile Targets
|
|
# ----------------
|
|
|
|
all: build
|
|
ALL: all
|
|
|
|
build: mk_build_dirs build_files set_build_permissions
|
|
|
|
install: build mk_dest_dirs install_files
|
|
|
|
clean:
|
|
@ \$(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:
|
|
@ \$(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
|
|
@ \$(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
|
|
@ \$(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\)!;
|
|
if ($build_file =~ m/\.cgi$/) {
|
|
$dest_file = '\'\$\(cgibin_prefix\)/\''.basename($dest_file);
|
|
} else {
|
|
$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
|
|
# -------------------
|
|
|
|
$echo "Building config.out"
|
|
|
|
rm -rf $config_script
|
|
|
|
pwd=`/bin/pwd`
|
|
|
|
$echoe "#!perl - this script is run from makefile with -n\n" >> $config_script
|
|
$echoe "# This script is automatically genareated by configure." >> $config_script
|
|
$echoe "# This script configures various global variables.\n" >> $config_script
|
|
|
|
$echo "while (<>) {" >> $config_script
|
|
|
|
$echo >> $config_script
|
|
$echoe " # Set the library search path with suitable interposing directories." >> $config_script
|
|
|
|
$echoe " s!\#tinder_libdir\#!$prefix/local_conf',\n '$prefix/default_conf',\n '$prefix/lib',\n '$pwd/$builddir/local_conf',\n '$pwd/$builddir/default_conf',\n '$pwd/$builddir/lib!;" >> $config_script
|
|
|
|
$echo >> $config_script
|
|
|
|
$echo " s!\#prefix\#!$prefix!;" >> $config_script
|
|
$echo " s!\#cgibin_prefix\#!$cgibin_prefix!;" >> $config_script
|
|
$echo " s!\#htmldir\#!$htmldir!;" >> $config_script
|
|
|
|
$echo >> $config_script
|
|
|
|
$echo " # Use Taint Perl mode for security." >> $config_script
|
|
$echo " s!\#perlflags\#!$perl_flags!;" >> $config_script
|
|
$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
|
|
|
|
$echo >> $config_script
|
|
|
|
$echoe " # 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
|
|
$echo "Could not find program: $cmd"
|
|
exit 9;
|
|
fi
|
|
$echo " s!\#$cmd\#!$full_cmd!;" >> $config_script
|
|
done
|
|
|
|
$echoe "} continue {" >> $config_script
|
|
$echoe " print or die \"-p destination: \$!\\\\n\";" >> $config_script
|
|
$echoe "}" >> $config_script
|
|
|
|
/bin/chmod +x $config_script
|
|
|
|
exit 0;
|