R3.14 tools installed into bin.

This commit is contained in:
Janet B. Anderson
1999-10-25 15:53:34 +00:00
parent e8913e439d
commit 1857ca2ab3
9 changed files with 416 additions and 0 deletions

View File

@@ -20,6 +20,7 @@ CONFIGS += CONFIG.Host.UnixCommon
CONFIGS += CONFIG_HOST_ARCH.UnixCommon
CONFIGS += CONFIG.Vx
CONFIGS += $(subst ../,,$(wildcard ../CONFIG.Vx.*))
#CONFIGS += $(CROSS_COMPILER_TARGET_ARCHS:%=CONFIG.Vx.%)
CONFIGS += CONFIG_SITE
@@ -33,5 +34,8 @@ CONFIGS += RULES_ARCHS
CONFIGS += RULES_DIRS
CONFIGS += RULES_TOP
BIN_INSTALLS += $(wildcard ../tools/*.pl)
BIN_INSTALLS += ../tools/installEpics
include $(TOP)/configure/RULES_BUILD

39
config/tools/cp.pl Executable file
View File

@@ -0,0 +1,39 @@
#!/usr/bin/perl
#
# UNIX-cp in Perl
use File::Copy;
sub Usage
{
my ($txt) = @_;
print "Usage:\n";
print "\tcp file1 file2\n";
print "\tcp file [ file2 file3 ...] directory\n";
print "\nError: $txt\n" if $txt;
exit 2;
}
# need at least two args: ARGV[0] and ARGV[1]
Usage("need more args") if $#ARGV < 1;
$target=$ARGV[$#ARGV];
@sources=@ARGV[0..$#ARGV-1];
if (-d $target)
{
foreach $file ( @sources )
{
copy ($file, "$target/$file");
}
}
else
{
Usage("Cannot copy more than one source into a single target")
if ($#sources != 0);
copy ($sources[0], $target);
}
# EOF cp.pl

13
config/tools/findBase.pl Executable file
View File

@@ -0,0 +1,13 @@
#!/usr/bin/perl
use Cwd;
$dir=cwd();
# make sure $dir ends with '/'
#
$dir="$dir/" unless ($dir =~ m'/$');
if ($dir =~ m'(.*(/|\\)base)(/|\\)')
{
print "$1";
}

97
config/tools/installEpics Executable file
View File

@@ -0,0 +1,97 @@
#!/bin/sh
# InstallEpics
#
# InstallEpics is used within makefiles to copy new versions of
# files into a destination directory.
#
##########################################################
TOOL=`basename $0`
MODE=755
CREATE_DIR=0
USAGE="Usage:
$TOOL [ -m mode ] file ... directory
-m mode Set the mode for the installed file (0755 by default)
file Name of file
directory Destination directory
"
# get command line options
while getopts m:g:o:csd OPT
do
case $OPT in
m) MODE=$OPTARG;;
g | o) echo "$USAGE"; echo "$i $OPTARG not implemented";;
c | s) echo "$USAGE"; echo "$i not implemented";;
d) CREATE_DIR=1;;
--) break;;
esac
done
shift `expr $OPTIND - 1`
# at least two args required
if [ $# -lt 2 ]
then
echo "Nothing to install"
exit
fi
INSTALL_DIR=
FILELIST=
for i
do
FILELIST="${FILELIST} ${INSTALL_DIR}"; INSTALL_DIR=$i; shift;
done
if [ ! -d "${INSTALL_DIR}" ] ;then
if [ ${CREATE_DIR} != "0" ] ;then
OLDIFS=${IFS}
IFS=/
DIRNAME=
for DIR in ${INSTALL_DIR}
do
if [ "${DIR}" = "." ] || [ "${DIR}" = ".." ] ;then
if [ "${DIRNAME}" = "" ] ;then
DIRNAME=${DIR}
else
DIRNAME=${DIRNAME}/${DIR}
fi
else
DIRNAME=${DIRNAME}/${DIR}
if [ ! -d "${DIRNAME}" ] ;then
mkdir "${DIRNAME}"
fi
fi
done
IFS=${OLDIFS}
else
echo "$USAGE\n Can't find directory '${INSTALL_DIR}'"
exit 1
fi
fi
for FILE in ${FILELIST}
do
if [ ! -f ${FILE} ] ;then
echo "$USAGE\n Can't find file '${FILE}'"
exit 1
fi
TEST=
FILEBASENAME=`basename ${FILE}`
if [ -f ${INSTALL_DIR}/${FILEBASENAME} ] ; then
#Is ${INSTALL_DIR}/${FILEBASENAME} link timestamp newer than ${FILE}
TEST=`find ${INSTALL_DIR} -name "${FILEBASENAME}" -newer ${FILE} -print`
fi
if [ "${TEST}x" = "x" ] ; then
#echo "Installing ${FILEBASENAME}"
rm -f ${INSTALL_DIR}/${FILEBASENAME}
cp -p ${FILE} ${INSTALL_DIR}/${FILEBASENAME}
chmod ${MODE} ${INSTALL_DIR}/${FILEBASENAME}
else
echo "${INSTALL_DIR}/${FILEBASENAME} is up to date"
fi
done
exit 0

108
config/tools/installEpics.pl Executable file
View File

@@ -0,0 +1,108 @@
#!/usr/bin/perl
#
# InstallEpics.pl
#
# InstallEpics is used within makefiles to copy new versions of
# files into a destination directory.
# Based on installEpics shell script.
#
# 2-4-97 -kuk-
#
##########################################################
use Getopt::Std;
use File::Path;
use File::Copy;
$tool=$0;
$tool=~ s'.*[/\\].+''; # basename
$mode=0755;
# get command line options
getopt "m";
$mode = oct ($opt_m) if ($opt_m);
# Complain about obsolete options:
Usage("unknown option given") if ($opt_g or $opt_o or $opt_c or $opt_s);
$num_files = $#ARGV;
# at least two args required
Usage ("Nothing to install") if ($num_files < 1);
# split args in file1 ... fileN target_dir:
@files=@ARGV[0..$num_files-1];
$install_dir=$ARGV[$num_files];
$install_dir =~ s[\\][/]g; # maybe fix DOS-style path
$install_dir =~ s[/$][]; # remove trailing '/'
# Do we have to create the directory?
unless (-d $install_dir)
{
# Create dir only if -d option given
Usage ("$install_dir does not exist") unless ($opt_d);
# Create all the subdirs that lead to $install_dir
mkpath ($install_dir, 1, 0777);
}
foreach $source ( @files )
{
Usage ("Can't find file '$source'") unless -f $source;
$basename=$source;
$basename=~s'.*[/\\]'';
$target = "$install_dir/$basename";
# The Win32 filesystem seems to be 'slow',
# i.e. $target may look like 'up to date'
# unless you wait an hour.
# -> skip this test on WIN32 ?
#if (-f $target and $^O ne "MSWin32")
if (-f $target)
{
if (-M $target < -M $source and
-C $target < -C $source)
{
print "$target is up to date\n";
next;
}
else
{
# remove old target, make sure it is deletable:
chmod 0777, $target;
unlink $target;
}
}
# print "Installing $source into $install_dir\n";
copy ($source, $target) or die "Copy failed";
# chmod 0555 <read-only> DOES work on WIN32, but:
# Another chmod 0777 to make it write- and deletable
# will then fail.
# -> you have to use Win32::SetFileAttributes
# to get rid of those files from within Perl.
# Because the chmod is not really needed on WIN32,
# just skip it!
chmod $mode, $target unless ($^O eq "MSWin32");
}
sub Usage
{
my ($txt) = @_;
print "Usage:\n";
print "\t$tool [ -m mode ] file ... directory\n";
print "\n";
print "\t-d Create non-exising directories\n";
print "\t-m mode Set the mode for the installed file";
print " (0755 by default)\n";
print "\tfile Name of file\n";
print "\tdirectory Destination directory\n";
print "$txt\n" if $txt;
exit 2;
}
# EOF installEpics.pl

31
config/tools/makeMakefile.pl Executable file
View File

@@ -0,0 +1,31 @@
#!/usr/bin/perl
#
# makeMakefile.pl
#
# called from RULES_ARCHS
#
#
# Usage: perl makeMakefile.pl O.*-dir Makefile-Type
$dir = $ARGV[0];
$type= $ARGV[1];
$makefile="$dir/Makefile";
if ($dir =~ m'O.(.+)')
{
$t_a = $1;
}
else
{
die "Cannot extract T_A from $dir";
}
mkdir ($dir, 0777) unless -d $dir;
open OUT, "> $makefile" or die "Cannot create $makefile";
print OUT "T_A=$t_a\n";
print OUT "BUILD_TYPE=$type\n";
print OUT "include ../Makefile.$type\n";
close OUT;
# EOF makeMakefile.pl

23
config/tools/mkdir.pl Executable file
View File

@@ -0,0 +1,23 @@
#!/usr/bin/perl
#
# UNIX-mkdir in Perl
#
# -p option generates full path to given dir
use File::Path;
use Getopt::Std;
getopt "";
foreach $dir ( @ARGV )
{
if ($opt_p)
{
mkpath ($dir) or die "Cannot make directory $dir";
}
else
{
mkdir ($dir, 0777) or die "Cannot make directory $dir";
}
}
# EOF mkdir.pl

69
config/tools/mv.pl Executable file
View File

@@ -0,0 +1,69 @@
#!/usr/bin/perl
#
# UNIX-mv in Perl
use File::Copy;
sub Usage
{
my ($txt) = @_;
print "Usage:\n";
print "\tmv oldname newname\n";
print "\tmv file [ file2 file3 ...] directory\n";
print "\nError: $txt\n" if $txt;
exit 2;
}
sub Move
{
my ($src, $dest) = @_;
print "Move($src, $dest)\n";
copy ($src, $dest) or die "Cannot copy $src to $dest";
unlink ($src) or die "Cannot remove $src";
}
# return filename.ext from Drive:/path/a/b/c/filename.ext
sub Filename
{
my ($file) = @_;
$file =~ s'.*[/\\]'';
return $file;
}
# need at least two args: ARGV[0] and ARGV[1]
Usage("need more args") if $#ARGV < 1;
$target=$ARGV[$#ARGV];
@sources=@ARGV[0..$#ARGV-1];
print "move @sources into $target\n";
# If target is (already existent) directory,
# move files into it:
if (-d $target)
{
foreach $file ( @sources )
{
Move ($file, "$target/" . Filename($file));
}
exit 0;
}
# Otherwise the target is a filename.
# Now 'mv' may be either a 'move' or a 'rename',
# in any case it requires exactly two args: old and new name.
Usage("Need exactly one source") if $#sources != 0;
$source = @sources[0];
# Move only if a simple rename
# fails (e.g. across file systems):
Move ($source, $target) unless (rename $source, $target);
# EOF mv.pl

32
config/tools/rm.pl Executable file
View File

@@ -0,0 +1,32 @@
#!/usr/bin/perl
#
# UNIX-rm in Perl
use File::Path;
use File::Find;
use Getopt::Std;
getopt "";
foreach $arg ( @ARGV )
{
next unless -e $arg;
if (-d $arg)
{
if ($opt_r and $opt_f)
{
rmtree $arg;
}
else
{
rmdir ($arg) or die "Cannot delete $arg";
}
}
else
{
unlink ($arg) or die "Cannot delete $arg";
}
}
# EOF rm.pl