mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-08 04:27:37 +00:00
f19e6b0d2b
prevent users from accidentally editing files in build or install directory check that code compiles before installing
203 lines
4.9 KiB
Bash
Executable File
203 lines
4.9 KiB
Bash
Executable File
#!/bin/sh -x
|
|
|
|
|
|
|
|
# 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
|
|
|
|
builddir=./build
|
|
|
|
|
|
config_script=./config.out
|
|
tinder_version='0.08'
|
|
perl_flags='-T'
|
|
|
|
|
|
# -------------------
|
|
# Build 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 "\$builddir = \"$builddir\";" \
|
|
-e "\$config_script=\"$config_script\";"\
|
|
-e '
|
|
use File::Basename;
|
|
@configurable_cmds = qw(perl gzip uudecode);
|
|
|
|
# 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
|
|
|
|
config_script=$config_script
|
|
confdir=localconf
|
|
|
|
# Makefile Targets
|
|
# ----------------
|
|
|
|
all: build
|
|
ALL: all
|
|
|
|
build_code: mk_build_dirs build_files
|
|
|
|
build:set_build_permissions compile_code
|
|
|
|
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: build_code
|
|
@ 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)/clientbin -type f | xargs chmod 555
|
|
|
|
compile_code: build_files
|
|
@ 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" | \\
|
|
xargs -l perl -T -c
|
|
|
|
# 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
|
|
# -------------------
|
|
|
|
rm -rf $config_script
|
|
|
|
pwd=`/bin/pwd`
|
|
|
|
echo "#!perl - this script is run from makefile with -n\n" >> $config_script
|
|
echo "# This script is automatically genareated by configure do not edit.\n" >> $config_script
|
|
echo "while (<>) {" >> $config_script
|
|
|
|
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
|
|
echo " s!\#tinder_version\#!$tinder_version!;" >> $config_script
|
|
echo " s!\#perlflags\#!$perl_flags!;" >> $config_script
|
|
echo "\n" >> $config_script
|
|
|
|
|
|
for cmd in perl gzip uudecode
|
|
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
|
|
|
|
echo "} continue {" >> $config_script
|
|
echo " print or die \"-p destination: \$!\\\\n\";" >> $config_script
|
|
echo "}" >> $config_script
|
|
|
|
|
|
exit 0;
|