https://github.com/RuleWorld/rulebender
Raw File
Tip revision: afc3570e8736c659d6cc21734ad932323811b945 authored by Ali Sinan Saglam on 12 June 2020, 20:22:23 UTC
Updated installation guide
Tip revision: afc3570
s_installation_packages.sh
#!/bin/bash
# This is a quick and dirty script for prepping the release files for RB.  It
# can be improved or a more robust build system that works with eclipse builder
# (and is windows friendly) can be used in the long run, but for now this saves
# a ton of time.
# 
# Build Step 1: Make sure that BNG and NFSim are at most recent version.
# Build Step 2: Make sure that BNGParser.jar is at most recent version.
# Build Step 3: Prepare the eclipse files for release through the plugin development environment.
# Build Step 4: Put the files in the right place (see below) and 
# Build Step 5: run this script.

# The release that eclipse generates should be in rbReleaseDir ("RB-Release"
# here) in the root rulebender trunk, and the script should also be run in the
# root (e.g. parent of rbReleaseDir).

# This script does the following:
# 1. Remove the jre folders from the eclipse output.
# 2. Create a 'zip' directory and move all of the eclipse outputs to that directory
#    while renaming the package names to RuleBender-<version>-<platform>
# 3. Copy the simulation resources (BNG, NFSim, and SampleModels) to each of the packages,
#    and delete the irrelevant binaries for each platform.
# 4. COPY the CREDITS.txt, RB-README.txt, and LICENSE.txt files. 

# Echo every command
set -o verbose
# Quit if there's an error
set -e

#echo "Stop !! The header lines of this script need to be changed."
#exit

# version number only used for file names. All other version branding is done
# in the .project file.
version="2.2"
rbReleaseDir="$HOME/workspace_rb_1/RuleBender"
rulebender_git_path="$HOME/workspace_rb_1_git/rulebender"
distributionResources="$rulebender_git_path/distributionResources"
bngdirname_internal="BioNetGen-2.4"
bngdirname_external="BioNetGen-2.4.0"
bng_top_level_dir="$HOME/BioNetGen.latest"
java_root="$HOME/d_java"

echo "Creating zip dir"
# make an output folder so you don't eff up the dirs
if [ ! -f $rbReleaseDir/zips ]; then
  mkdir -p $rbReleaseDir/zips
else
  rm -r $rbReleaseDir/zips
fi


echo "Copying release files to zip dir and renaming to platform and version names"
echo "This copy must come first, since it creates the directories."
# rename and move all of the RuleBender dirs
cp -r  $rbReleaseDir/linux.gtk.x86_64/eclipse/    \
         $rbReleaseDir/zips/RuleBender-$version-lin64/
cp -r  $rbReleaseDir/macosx.cocoa.x86_64/eclipse/ \
         $rbReleaseDir/zips/RuleBender-$version-osx64/
cp -r  $rbReleaseDir/win32.win32.x86_64/eclipse/     \
         $rbReleaseDir/zips/RuleBender-$version-win64/
#cp -r  $rbReleaseDir/win32.win32.x86/eclipse/     \
#         $rbReleaseDir/zips/RuleBender-$version-win32/

echo "Copying BioNetGen " 

cp -r $bng_top_level_dir/Linux/$bngdirname_external    \
             $rbReleaseDir/zips/RuleBender-$version-lin64/$bngdirname_internal
chmod +w -R  $rbReleaseDir/zips/RuleBender-$version-lin64/$bngdirname_internal
cp -r $bng_top_level_dir/OSX/$bngdirname_external    \
             $rbReleaseDir/zips/RuleBender-$version-osx64/$bngdirname_internal
chmod +w -R  $rbReleaseDir/zips/RuleBender-$version-osx64/$bngdirname_internal
cp -r $bng_top_level_dir/Win64/$bngdirname_external   \
             $rbReleaseDir/zips/RuleBender-$version-win64/$bngdirname_internal
chmod +w -R  $rbReleaseDir/zips/RuleBender-$version-win64/$bngdirname_internal
#cp -r $bng_top_level_dir/Win32/$bngdirname_external   \
#             $rbReleaseDir/zips/RuleBender-$version-win32/$bngdirname_internal
#chmod +w -R  $rbReleaseDir/zips/RuleBender-$version-win32/$bngdirname_internal



echo "Copying RB-README.txt, LICENSE.txt, and CREDITS.txt"

cp $distributionResources/*.txt  $rbReleaseDir/zips/RuleBender-$version-lin64
cp $distributionResources/*.txt  $rbReleaseDir/zips/RuleBender-$version-osx64
cp $distributionResources/*.txt  $rbReleaseDir/zips/RuleBender-$version-win64
#cp $distributionResources/*.txt  $rbReleaseDir/zips/RuleBender-$version-win32

cp $distributionResources/Samples/*.bngl \
        $rbReleaseDir/zips/RuleBender-$version-lin64/$bngdirname_internal/Models2
cp $distributionResources/Samples/*.bngl \
        $rbReleaseDir/zips/RuleBender-$version-osx64/$bngdirname_internal/Models2
cp $distributionResources/Samples/*.bngl \
        $rbReleaseDir/zips/RuleBender-$version-win64/$bngdirname_internal/Models2
#cp $distributionResources/Samples/*.bngl \
#        $rbReleaseDir/zips/RuleBender-$version-win32/$bngdirname_internal/Models2


echo "Copying SampleModels"

cp -r $distributionResources/Simulation/SampleModels \
      $rbReleaseDir/zips/RuleBender-$version-lin64
cp -r $distributionResources/Simulation/SampleModels \
      $rbReleaseDir/zips/RuleBender-$version-osx64
cp -r $distributionResources/Simulation/SampleModels \
      $rbReleaseDir/zips/RuleBender-$version-win64
#cp -r $distributionResources/Simulation/SampleModels \
#      $rbReleaseDir/zips/RuleBender-$version-win32


echo " To insert Java runtime environments into the RuleBender installation packages change the next line."
if [ "YES" = "YES" ]; then

  echo "The following lines are debugged, but there is an underlying assumption that any Win64 installation"
  echo "will be done on Windows 10 or higher.  To create a 64 bit version of RuleBender for Windows 7,8 or 9,"
  echo "one more Jave runtime environment is needed. The code that copies it into the installation package,"
  echo "could be a modified version of the existing code for Win64."
  # ###################################################################
  #   Apple specific instructions
  # ###################################################################
  cd $rbReleaseDir/zips/RuleBender-$version-osx64/RuleBender.app/Contents/MacOS
  ln -s ../../../$bngdirname_internal   $bngdirname_internal
  cp -r $java_root/java_jre_osx64 .
  mv RuleBender.ini  RuleBender.ini.safe
  head -7            RuleBender.ini.safe > RuleBender.ini
  echo "-clearPersistedState"    >>        RuleBender.ini
  echo "-vm"                     >>        RuleBender.ini
  echo "./java_jre_osx64/jdk1.8.0_72.jdk/Contents/Home/jre/lib/jli/libjli.dylib" >> RuleBender.ini
  tail -7           RuleBender.ini.safe >> RuleBender.ini


  # ###################################################################
  #   Linux specific instructions
  # ###################################################################
  cd $rbReleaseDir/zips/RuleBender-$version-lin64
  cp -r $java_root/java_jre_lin64 .
  mv RuleBender.ini  RuleBender.ini.safe
  head -7            RuleBender.ini.safe > RuleBender.ini
  echo "-clearPersistedState"    >>        RuleBender.ini
  echo "-vm"                     >>        RuleBender.ini
  echo "./java_jre_lin64/jdk1.8.0_171/jre/bin/java" >> RuleBender.ini
  tail -3           RuleBender.ini.safe >> RuleBender.ini


  ## ###################################################################
  ##   Win32 specific instructions
  ## ###################################################################
  #cd $rbReleaseDir/zips/RuleBender-$version-win32
  #cp -r $java_root/java_jre_win32 .
  #mv RuleBender.ini  RuleBender.ini.safe
  #head -7            RuleBender.ini.safe > RuleBender.ini
  #echo "-clearPersistedState"    >>        RuleBender.ini
  #echo "-vm"                     >>        RuleBender.ini
  ## Is the 0_40 build 32bit or 64bit?
  #echo ".\java_jre_win32\jre1.8.0_40\bin\java"  >> RuleBender.ini
  #tail -3           RuleBender.ini.safe >> RuleBender.ini


  # ###################################################################
  #   Win64 specific instructions
  # ###################################################################
  cd $rbReleaseDir/zips/RuleBender-$version-win64
  cp -r $java_root/java_jre_win64 .
  mv RuleBender.ini  RuleBender.ini.safe
  head -7            RuleBender.ini.safe > RuleBender.ini
  echo "-clearPersistedState"    >>        RuleBender.ini
  echo "-vm"                     >>        RuleBender.ini
  echo ".\java_jre_win64\jdk1.8.0_121\bin\java" >> RuleBender.ini
  tail -3           RuleBender.ini.safe >> RuleBender.ini

fi

#cd to zips dir to avoid more dirs in zip
cd $rbReleaseDir/zips/

# The rm statements are not needed, since the whole zip directory is new.
#rm  RuleBender-$version-lin64.tar.gz 
#rm  RuleBender-$version-osx64.tar.gz  
#rm  RuleBender-$version-win32.zip     

tar -czf  RuleBender-$version-lin64.tar.gz  RuleBender-$version-lin64
tar -czf  RuleBender-$version-osx64.tar.gz  RuleBender-$version-osx64
zip -r -q RuleBender-$version-win64.zip     RuleBender-$version-win64
zip -r -q RuleBender-$version-win32.zip     RuleBender-$version-win32
back to top