Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve script to extracts tarball from cmssw project #3403

Merged
merged 1 commit into from Apr 19, 2014
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
219 changes: 125 additions & 94 deletions Fireworks/Core/standalone_build/make_tarball.sh
@@ -1,22 +1,15 @@
#!/bin/bash

dwnCmd="wget --no-check-certificate"
if [ `uname` = "Darwin" ]; then
# compatibility problem on 10.5
dwnCmd="curl -k -O"
fi

getExternals()
{
mkdir ${tard}/external
mkdir ${tard}/external

# external libraries
extdl=${tard}/external/lib
mkdir $extdl

extt=/tmp/cmsswExt
ext=`dirname ${CMSSW_DATA_PATH}`/external
ls -l $CMSSW_RELEASE_BASE/external/$SCRAM_ARCH/lib/* > $HOME/extlist

ls -l $CMSSW_RELEASE_BASE/external/$SCRAM_ARCH/lib/* > $extt
echo "=========================================================="
echo "=========================================================="

Expand Down Expand Up @@ -49,10 +42,10 @@ getExternals()
sigcpp xrootd zlib xz freetype
do
export i;
ever=`grep $i $HOME/extlist | perl -ne 'if ($_ =~ /$ENV{i}\/(.*)\/lib\/(.*)/ ) {print "$1\n"; last;}'`
ever=`grep $i $extt | perl -ne 'if ($_ =~ /$ENV{i}\/(.*)\/lib\/(.*)/ ) {print "$1\n"; last;}'`
echo "copy $i $ever"
if [ -z "$ever" ]; then
echo "warning can't get externals for $i"
echo "!!!!!!!! can't get externals for $i"
fi
# echo "cp -a $ext/$i/$ever/lib/* === ${extdl}"
cp -a $ext/$i/$ever/lib/* ${extdl}
Expand All @@ -79,67 +72,80 @@ getExternals()
# ROOTSYS=${tard}/external/root make install
# popd
cp -a $origr ${tard}/external/root



rm $HOME/extlist;


}

#----------------------------------------------------------------

getCmssw()
{
echo "=========================================================="
echo "=========================================================="
echo "=========================================================="
echo "=========================================================="
echo "get CMS libs"

# cms libraries
mkdir -p ${tard}/lib

$dwnCmd https://raw.github.com/cms-sw/cmsdist/IB/CMSSW_7_0_X/stable/fwlite_build_set.file

while read p; do
echo "get libs from $p"
x=`dirname $p`
y=`basename $p`
cp -a $CMSSW_RELEASE_BASE/lib/*/*${x}*${y}* ${tard}/lib/
#if [ -f "$file" ]
cp -f $CMSSW_BASE/lib/*/*${x}*${y}* ${tard}/lib/ 2>/dev/null
#fi
done < fwlite_build_set.file

# plugins cache file
echo "get $CMSSW_RELEASE_BASE/lib/*/.edmplugincache > ${tard}/lib/.edmplugincache"
touch ${tard}/lib/.edmplugincache
cat $CMSSW_RELEASE_BASE/lib/*/.edmplugincache > /tmp/.edmplugincache
cat $CMSSW_BASE/lib/*/.edmplugincache >> /tmp/.edmplugincache
cat /tmp/.edmplugincache | sort -u > ${tard}/lib/.edmplugincache
mkdir -p ${tard}/lib
fwl="/tmp/fwlite_build_set.file"
$dwnCmd $fwl https://raw.githubusercontent.com/cms-sw/cmsdist/IB/CMSSW_7_0_X/stable/fwlite_build_set.file

# remove package without libs
perl -i -ne 'print unless /Fireworks\/Macros/' $fwl
perl -i -ne 'print unless /FWCore\/PythonUtilities/' $fwl
perl -i -ne 'print unless /DataFormats\/MuonData/' $fwl
perl -i -ne 'print unless /Utilities\/ReleaseScripts/' $fwl

cn=${tard}/lib/.edmplugincache;
fwpl=`cat $fwl | perl -ne 'if( ~/(.+)\/(.+)$/){print "$1$2 ";}'`
echo "get list from $fwpl"
for i in $fwpl
do
cp -f $CMSSW_RELEASE_BASE/lib/$SCRAM_ARCH/*${i}* $tard/lib
grep $i $CMSSW_RELEASE_BASE/lib/$SCRAM_ARCH/.edmplugincache >> $cn

done;

echo "getting libs from $CMSSW_BASE/lib/$SCRAM_ARCH"
cp -f $CMSSW_BASE/lib/$SCRAM_ARCH/* ${tard}/lib/

sort -u $cn -o $cn
}

#----------------------------------------------------------------

getSources()
{
echo "=========================================================="
echo "getting sources."
echo "=========================================================="
echo "getting Fireworks info/config files."
# binary
mkdir ${tard}/libexec
cp $CMSSW_RELEASE_BASE/bin/*/cmsShow.exe ${tard}/libexec
cp $CMSSW_RELEASE_BASE/bin/*/cmsShowSendReport ${tard}/libexec
cp $CMSSW_RELEASE_BASE/bin/$SCRAM_ARCH/cmsShow.exe ${tard}/libexec
cp $CMSSW_RELEASE_BASE/bin/$SCRAM_ARCH/cmsShowSendReport ${tard}/libexec

if [ -e $CMSSW_BASE/bin/$SCRAM_ARCH/cmsShow.exe ]; then
cp -f $CMSSW_BASE/bin/$SCRAM_ARCH/cmsShow.exe ${tard}/libexec
fi
if [ -e $CMSSW_BASE/bin/$SCRAM_ARCH/cmsShowSendReport ]; then
cp -f $CMSSW_BASE/bin/$SCRAM_ARCH/cmsShowSendReport ${tard}/libexec
fi

# src
srcDir="${tard}/src/Fireworks/Core"
mkdir -p $srcDir
cp -a $CMSSW_RELEASE_BASE/src/Fireworks/Core/macros $srcDir
cp -a $CMSSW_RELEASE_BASE/src/Fireworks/Core/icons $srcDir
cp -a $CMSSW_RELEASE_BASE/src/Fireworks/Core/data $srcDir

cv=`perl -e 'if ($ENV{CMSSW_VERSION} =~ /CMSSW_(\d+)_(\d+)_/) {print "${1}.${2}";}'`
cp -a $CMSSW_BASE/src/Fireworks/Core/macros $srcDir
cp -a $CMSSW_BASE/src/Fireworks/Core/icons $srcDir
cp -a $CMSSW_BASE/src/Fireworks/Core/data $srcDir
cp -a $CMSSW_BASE/src/Fireworks/Core/scripts $srcDir

# version info
cv=$tversion;
if [ -z $cv ]; then
cv=`perl -e 'if ($ENV{CMSSW_VERSION} =~ /CMSSW_(\d+)_(\d+)_/) {print "${1}.${2}";}'`
fi
echo $cv > $srcDir/data/version.txt
echo "DataFormats: $CMSSW_VERSION" >> $srcDir/data/version.txt
cat $srcDir/data/version.txt
cp -a $CMSSW_RELEASE_BASE/src/Fireworks/Core/scripts $srcDir

# cat $srcDir/data/version.txt
cp -a $CMSSW_RELEASE_BASE/src/Fireworks/Core/scripts $srcDir

# link to config files
cd $tard
ln -s src/Fireworks/Core/macros/default.fwc .
ln -s src/Fireworks/Core/macros/ispy.fwc .
Expand All @@ -148,42 +154,42 @@ getSources()
ln -s src/Fireworks/Core/macros/simGeo.fwc .
ln -s src/Fireworks/Core/macros/overlaps.fwc .

ln -s src/Fireworks/Core/scripts/cmsShow .

cp $CMSSW_DATA_PATH/data-Fireworks-Geometry/4-cms/Fireworks/Geometry/data/* $tard
ln -s src/Fireworks/Core/scripts/cmsShow .
}

#----------------------------------------------------------------

getDataFiles()
{
echo "=========================================================="
echo "=========================================================="
echo "get data files"
# sample files
cd $tard
cd ${tard}
name=`perl -e '($ver, $a, $b, $c) = split('_', $ENV{CMSSW_VERSION}); print "data", $a, $b, ".root" '`
$dwnCmd http://amraktad.web.cern.ch/amraktad/mail/scratch0/data/$name
mv $name data.root
$dwnCmd data.root http://amraktad.web.cern.ch/amraktad/mail/scratch0/data/$name

mc_name=`perl -e '($ver, $a, $b, $c) = split('_', $ENV{CMSSW_VERSION}); print "mc", $a, $b, ".root" '`
$dwnCmd http://amraktad.web.cern.ch/amraktad/mail/scratch0/data/$mc_name
mv $mc_name mc.root
$dwnCmd mc.root http://amraktad.web.cern.ch/amraktad/mail/scratch0/data/$mc_name

$dwnCmd http://amraktad.web.cern.ch/amraktad/mail/scratch0/data/cmsSimGeom-14.root
$dwnCmd http://amraktad.web.cern.ch/amraktad/mail/scratch0/data/cmsGeom10.root
#geometry files
cp $CMSSW_RELEASE_BASE/external/$SCRAM_ARCH/data/Fireworks/Geometry/data/cmsSimGeom-* ${tard}
cp $CMSSW_RELEASE_BASE/external/$SCRAM_ARCH/data/Fireworks/Geometry/data/cmsGeom* ${tard}
}

#----------------------------------------------------------------

makeTar()
{
cd $origd
bdir=`basename $tard`
bdir=`dirname $tard`
cd $bdir
tname=`basename $tard`
if [ `uname` = "Darwin" ]; then
echo "Packing tarball ${bdir}.mac.tar.gz"
tar -czf ${bdir}.mac.tar.gz $bdir
echo "Packing tarball ${tname}.mac.tar.gz"
tar -czf ${tname}.mac.tar.gz $tname
else
echo "Packing tarball ${bdir}.linux.tar.gz"
tar -czf ${bdir}.linux.tar.gz $bdir
echo "Packing tarball ${tname}.linux.tar.gz"
tar -czf ${tname}.linux.tar.gz $tname
fi
}

Expand All @@ -192,49 +198,74 @@ makeTar()
#----------------------------------------------------------------
#----------------------------------------------------------------

if [ $# -lt 1 ]; then
echo "Usage: $0 [-t] [-v] destination_dir "
exit 1
fi


while [ $# -gt 0 ]; do
case "$1" in
-t) doTar=on;;
-v) verbose=on;
esac
tard=$1
shift
usage() { echo "Usage: $0 --tar --version=<version> --dir=<destDir> --verbose --force" ; exit;}

for i in "$@"
do
case $i in
--dir=*)
tard="${i#*=}"
echo "Destination directory == [$tard]"
shift;
;;
--version=*)
tversion="${i#*=}"
echo "Tarball version == $tversion"
shift;
;;
--tar)
doTar=YES
echo "Do tar&zip after extraction"
shift;
;;
--verbose)
set -x
shift;
;;
--force)
doForce=1;
shift;
;;
*)
usage
;;
esac
done

export tard
tard=`perl -e '{$a = $ENV{tard}; $a =~ s/^~/$ENV{HOME}/;$a =~ s/^\./$ENV{PWD}/; print "$a"; }'`

if [[ "$tard" = /* ]]
then
: # Absolute path
else
: tard=$PWD/$tard

if [ -z $tard ]; then
echo "Destination directory not specified"
usage
fi

echo "dirpath = $tard"
echo -e "Start packaging .... \n"

if [ "X$verbose" = Xon ] ; then
set -xv
fi

if [ -f $tard ]; then
echo "dir exist alreday"
exit

if [ -z $doForce ] && [ -e $tard ] ; then
echo "Destination directory [$tard] already exists. Use --force option."
exit 1;
fi

mkdir $tard

dwnCmd="wget --no-check-certificate -O "
if [ `uname` = "Darwin" ]; then
dwnCmd="curl --insecure -o "
fi

origd=$PWD
getExternals
getCmssw


getSources
getDataFiles
echo $tard
if [ "X$doTar" = Xon ] ; then
if [ -n "$doTar" ] ; then
makeTar
fi