From 6118ce60e91b8ccf5e57cc8ee3a53eaa05adf8a8 Mon Sep 17 00:00:00 2001 From: Dave Parker Date: Tue, 7 Nov 2006 14:02:41 +0000 Subject: [PATCH] New way of generating startup scripts (bin/prism, etc.). git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@126 bbc10eb1-c90d-0410-af57-cb519fbb1720 --- prism/Makefile | 72 +++++++++++++++++----- prism/install.sh | 16 +++-- prism/{ => src}/bin/prism.bat | 0 prism/src/bin/prism.cygwin | 46 ++++++++++++++ prism/src/bin/prism.darwin | 46 ++++++++++++++ prism/{bin/prism => src/bin/prism.linux} | 2 +- prism/{ => src}/bin/xprism.bat | 0 prism/{bin/xprism => src/bin/xprism.linux} | 2 +- 8 files changed, 160 insertions(+), 24 deletions(-) rename prism/{ => src}/bin/prism.bat (100%) create mode 100644 prism/src/bin/prism.cygwin create mode 100755 prism/src/bin/prism.darwin rename prism/{bin/prism => src/bin/prism.linux} (97%) rename prism/{ => src}/bin/xprism.bat (100%) rename prism/{bin/xprism => src/bin/xprism.linux} (88%) diff --git a/prism/Makefile b/prism/Makefile index f2b46fed..41f56be6 100644 --- a/prism/Makefile +++ b/prism/Makefile @@ -196,6 +196,39 @@ JAVA_INCLUDES = -I $(JAVA_JNI_H_DIR) -I $(JAVA_JNI_MD_H_DIR) MAKE_DIRS = dd jdd odd dv prism mtbdd sparse hybrid parser settings chart userinterface pepa/compiler apmc simulator +ifeq ($(OSTYPE),linux) + BIN_PRISM=bin/prism + BIN_PRISM_SRC=src/bin/prism.linux + BIN_XPRISM=bin/xprism + BIN_XPRISM_SRC=src/bin/xprism.linux + BIN_TARGETS=$(BIN_PRISM) $(BIN_XPRISM) +endif +ifeq ($(OSTYPE),solaris) + BIN_PRISM=bin/prism + BIN_PRISM_SRC=src/bin/prism.linux + BIN_XPRISM=bin/xprism + BIN_XPRISM_SRC=src/bin/xprism.linux + BIN_TARGETS=$(BIN_PRISM) $(BIN_XPRISM) +endif +ifeq ($(OSTYPE),cygwin) + BIN_PRISM=bin/prism + BIN_PRISM_SRC=src/bin/prism.cygwin + BIN_XPRISM=bin/xprism + BIN_XPRISM_SRC=src/bin/xprism.linux + BIN_PRISM=bin/prism.bat + BIN_PRISM_SRC=src/bin/prism.bat + BIN_XPRISM=bin/xprism.bat + BIN_XPRISM_SRC=src/bin/xprism.bat + BIN_TARGETS=$(BIN_PRISM) $(BIN_XPRISM) $(BIN_PRISM_BAT) $(BIN_XPRISM_BAT) +endif +ifeq ($(OSTYPE),darwin) + BIN_PRISM=bin/prism + BIN_PRISM_SRC=src/bin/prism.darwin + BIN_XPRISM=bin/xprism + BIN_XPRISM_SRC=src/bin/xprism.linux + BIN_TARGETS=$(BIN_PRISM) $(BIN_XPRISM) +endif + default: all all: checks cuddpackage prism @@ -216,7 +249,7 @@ cuddpackageforce: # use this to force build of cudd (even if dir is just a symli /bin/cp Makefile.$(OSTYPE) Makefile && \ $(MAKE) -prism: checks sortplugins make_dirs post_make +prism: checks sortplugins make_dirs bin_scripts sortplugins: # @(rm -f $(SRC_DIR)/apmc; \ @@ -251,23 +284,27 @@ make_dirs: LIBPREFIX="$(LIBPREFIX)" \ LIBSUFFIX="$(LIBSUFFIX)") \ || exit 1; \ - done - -post_make: - @(if [ "$(OSTYPE)" = "darwin" ]; then \ + done; \ + if [ "$(OSTYPE)" = "darwin" ]; then \ echo Creating shared library symlinks...; \ (cd $(LIB_DIR) && \ for lib in `ls *$(LIBSUFFIX)`; do ln -fs $$lib `echo $$lib | sed s/$(LIBSUFFIX)/.jnilib/`; done;); \ - fi; \ - echo Fixing startup scripts...; \ - (cd bin && \ - if [ "$(OSTYPE)" = "darwin" ]; then \ - sed 's/\(DY\)*LD_LIBRARY_PATH/DYLD_LIBRARY_PATH/g' prism > prism.tmp; \ - else \ - sed 's/\(DY\)*LD_LIBRARY_PATH/LD_LIBRARY_PATH/g' prism > prism.tmp; \ - fi; \ - mv prism.tmp prism; \ - chmod 755 prism )) + fi + +bin_scripts: $(BIN_TARGETS) + @./install.sh silent + +$(BIN_PRISM): $(BIN_PRISM_SRC) + @echo "$< -> $@"; cp $< $@ + +$(BIN_XPRISM): $(BIN_XPRISM_SRC) + @echo "$< -> $@"; cp $< $@ + +$(BIN_PRISM_BAT): $(BIN_PRISM_BAT_SRC) + @echo "$< -> $@"; cp $< $@ + +$(BIN_XPRISM_BAT): $(BIN_XPRISM_BAT_SRC) + @echo "$< -> $@"; cp $< $@ dist: dist_copy clean_all dist_files dist_tidy @@ -318,7 +355,7 @@ dist_tidy: @find . \( -type d -o -type s \) -exec chmod 755 {} \; @find . -type f \( -name '*.sh' -o -name '*.so' -o -name '*.dll' \) -exec chmod 755 {} \; @find examples -type f -name 'auto' -exec chmod 755 {} \; - @chmod 755 bin/* + @chmod 755 bin/* src/bin/* binary: @echo Generating jar file... @@ -346,7 +383,8 @@ clean: checks || exit 1; \ done; \ find $(CLASSES_DIR) -name '*.class' -exec rm {} \; ; \ - rm -f lib/*jnilib) + rm -f lib/*jnilib; \ + rm $(BIN_PRISM) $(BIN_XPRISM) $(BIN_PRISM_BAT) $(BIN_XPRISM_BAT) ) celan: clean diff --git a/prism/install.sh b/prism/install.sh index 8e9a7385..216f3533 100755 --- a/prism/install.sh +++ b/prism/install.sh @@ -13,22 +13,28 @@ if [ `basename $PRISM_DIR` = bin ]; then fi # Now start the 'installation' -echo "Installing PRISM (directory=$PRISM_DIR)" +if [ ! "$1" = "silent" ] ; then + echo "Installing PRISM (directory=$PRISM_DIR)" +fi TEMP_FILE=tmp for FILE_TO_CHANGE in bin/prism bin/xprism do if [ -f $PRISM_DIR/$FILE_TO_CHANGE ]; then - echo "Modifying script $PRISM_DIR/$FILE_TO_CHANGE..." + if [ ! "$1" = "silent" ] ; then + echo "Setting path in startup script $PRISM_DIR/$FILE_TO_CHANGE..." + fi if sed -e "s|PRISM_DIR=.*|PRISM_DIR=$PRISM_DIR|g" $PRISM_DIR/$FILE_TO_CHANGE > $PRISM_DIR/$TEMP_FILE ; then /bin/mv $PRISM_DIR/$TEMP_FILE $PRISM_DIR/$FILE_TO_CHANGE chmod 755 $PRISM_DIR/$FILE_TO_CHANGE else - echo "Installation failed." + echo "Error: Failed to modify startup scripts." exit 0 fi else - echo "Error: Could not locate script $PRISM_DIR/$FILE_TO_CHANGE" + echo "Error: Could not locate startup script $PRISM_DIR/$FILE_TO_CHANGE" exit fi done -echo "Installation complete." +if [ ! "$1" = "silent" ] ; then + echo "Installation complete." +fi diff --git a/prism/bin/prism.bat b/prism/src/bin/prism.bat similarity index 100% rename from prism/bin/prism.bat rename to prism/src/bin/prism.bat diff --git a/prism/src/bin/prism.cygwin b/prism/src/bin/prism.cygwin new file mode 100644 index 00000000..51f8b968 --- /dev/null +++ b/prism/src/bin/prism.cygwin @@ -0,0 +1,46 @@ +#!/bin/sh + +# Startup script for PRISM (Linux/Solaris) + +# PRISM home directory +PRISM_DIR=/home/luser/prism + +# Command to launch Java +if [ "$PRISM_JAVA" = "" ]; then + PRISM_JAVA=java +fi + +# Max memory for Java +if [ "$PRISM_JAVAMAXMEM" != "" ]; then + PRISM_JAVAMAXMEM=`echo "$PRISM_JAVAMAXMEM" | awk /^[0-9]+[mk]?$/` + if [ "$PRISM_JAVAMAXMEM" = "" ]; then + echo; echo "Error: Environment variable PRISM_JAVAMAXMEM is invalid."; exit + fi + PRISM_JAVAMAXMEM="-Xmx$PRISM_JAVAMAXMEM" +fi + +# Add PRISM to LD_LIBRARY_PATH +if [ "$LD_LIBRARY_PATH" = "" ]; then + LD_LIBRARY_PATH="$PRISM_DIR"/lib +else + LD_LIBRARY_PATH="$PRISM_DIR"/lib:$LD_LIBRARY_PATH +fi + +# Set up classpath - jar file (for binary versions) gets priority +PRISM_CLASSPATH="$PRISM_DIR"/lib/prism.jar:"$PRISM_DIR"/classes:"$PRISM_DIR"/lib/pepa.zip + +# Export environment variables +export PRISM_DIR LD_LIBRARY_PATH + +# Main Java class to launch +if [ "$PRISM_MAINCLASS" = "" ]; then + PRISM_MAINCLASS=prism.PrismCL +fi + +# Do we run headless? (GUI overrides this) +if [ "$PRISM_HEADLESS" = "" ]; then + PRISM_HEADLESS=true +fi + +# Run PRISM through Java +"$PRISM_JAVA" $PRISM_JAVAMAXMEM -Djava.awt.headless=$PRISM_HEADLESS -Djava.library.path=`cygpath -wp $PRISM_DIR/lib` -classpath `cygpath -wp $"$PRISM_CLASSPATH"` $PRISM_MAINCLASS "$@" diff --git a/prism/src/bin/prism.darwin b/prism/src/bin/prism.darwin new file mode 100755 index 00000000..dec6d885 --- /dev/null +++ b/prism/src/bin/prism.darwin @@ -0,0 +1,46 @@ +#!/bin/sh + +# Startup script for PRISM (Linux/Solaris) + +# PRISM home directory +PRISM_DIR=/home/luser/prism + +# Command to launch Java +if [ "$PRISM_JAVA" = "" ]; then + PRISM_JAVA=java +fi + +# Max memory for Java +if [ "$PRISM_JAVAMAXMEM" != "" ]; then + PRISM_JAVAMAXMEM=`echo "$PRISM_JAVAMAXMEM" | awk /^[0-9]+[mk]?$/` + if [ "$PRISM_JAVAMAXMEM" = "" ]; then + echo; echo "Error: Environment variable PRISM_JAVAMAXMEM is invalid."; exit + fi + PRISM_JAVAMAXMEM="-Xmx$PRISM_JAVAMAXMEM" +fi + +# Add PRISM to DYLD_LIBRARY_PATH +if [ "$DYLD_LIBRARY_PATH" = "" ]; then + DYLD_LIBRARY_PATH="$PRISM_DIR"/lib +else + DYLD_LIBRARY_PATH="$PRISM_DIR"/lib:$DYLD_LIBRARY_PATH +fi + +# Set up classpath - jar file (for binary versions) gets priority +PRISM_CLASSPATH="$PRISM_DIR"/lib/prism.jar:"$PRISM_DIR"/classes:"$PRISM_DIR"/lib/pepa.zip + +# Export environment variables +export PRISM_DIR DYLD_LIBRARY_PATH + +# Main Java class to launch +if [ "$PRISM_MAINCLASS" = "" ]; then + PRISM_MAINCLASS=prism.PrismCL +fi + +# Do we run headless? (GUI overrides this) +if [ "$PRISM_HEADLESS" = "" ]; then + PRISM_HEADLESS=true +fi + +# Run PRISM through Java +"$PRISM_JAVA" $PRISM_JAVAMAXMEM -Djava.awt.headless=$PRISM_HEADLESS -Djava.library.path=$PRISM_DIR/lib -classpath "$PRISM_CLASSPATH" $PRISM_MAINCLASS "$@" diff --git a/prism/bin/prism b/prism/src/bin/prism.linux similarity index 97% rename from prism/bin/prism rename to prism/src/bin/prism.linux index 128c0a11..0050b2ec 100755 --- a/prism/bin/prism +++ b/prism/src/bin/prism.linux @@ -3,7 +3,7 @@ # Startup script for PRISM (Linux/Solaris) # PRISM home directory -PRISM_DIR=/home/staff/dxp/prism +PRISM_DIR=/home/luser/prism # Command to launch Java if [ "$PRISM_JAVA" = "" ]; then diff --git a/prism/bin/xprism.bat b/prism/src/bin/xprism.bat similarity index 100% rename from prism/bin/xprism.bat rename to prism/src/bin/xprism.bat diff --git a/prism/bin/xprism b/prism/src/bin/xprism.linux similarity index 88% rename from prism/bin/xprism rename to prism/src/bin/xprism.linux index d24bc9ac..316a42e7 100755 --- a/prism/bin/xprism +++ b/prism/src/bin/xprism.linux @@ -3,7 +3,7 @@ # Startup script for PRISM GUI (Linux/Solaris) # PRISM home directory -PRISM_DIR=/home/staff/dxp/prism +PRISM_DIR=/home/luser/prism # Launch using main PRISM script PRISM_MAINCLASS=userinterface.GUIPrism