diff --git a/bin/mac/info_plist_parser.scpt b/bin/mac/info_plist_parser.scpt deleted file mode 100644 index 2340dbd3f3ec..000000000000 --- a/bin/mac/info_plist_parser.scpt +++ /dev/null @@ -1,45 +0,0 @@ -# argv: first argument is optional java architecture version ("64" or "32" bit) -on run argv - # Determine path to "../../Contents/Info.plist" - tell application "Finder" - set binFolder to container of container of (path to me) as text - set the plistPath to (POSIX path of binFolder) & ("/Contents/Info.plist") - end tell - - # Fetch JVM system properties & VM options from Info.plist - tell application "System Events" - set the plistFile to property list file plistPath - # Java section - set javaOptionsSection to property list item "Java" of plistFile - - # Java | Properties sction - set jvmProperties to property list items of property list item "Properties" of javaOptionsSection - - # Collect system properties as -D$name=$value - set jvmSysPropertiesStr to "" - repeat with jvmProperty in jvmProperties - set propertyKey to name of jvmProperty - set propertyValue to value of jvmProperty - set jvmSysPropertiesStr to jvmSysPropertiesStr & " -D" & propertyKey & "=" & propertyValue - end repeat - - # Collect vm options - set vmOptionsStr to "" - - if (count argv) = 1 then - set javaArchitecture to item 1 of argv - - # Common VM options - set vmOptionsStr to value of property list item "VMOptions" of javaOptionsSection - - # Architecture - specific - if javaArchitecture = "64" then - set vmOptionsStr to vmOptionsStr & " " & value of property list item "VMOptions.x86_64" of javaOptionsSection - else if javaArchitecture = "32" then - set vmOptionsStr to vmOptionsStr & " " & value of property list item "VMOptions.i386" of javaOptionsSection - end if - end if - - return vmOptionsStr & " " & jvmSysPropertiesStr - end tell -end run \ No newline at end of file diff --git a/bin/mac/inspect.sh b/bin/mac/inspect.sh new file mode 100644 index 000000000000..b135e0376b24 --- /dev/null +++ b/bin/mac/inspect.sh @@ -0,0 +1,11 @@ +#!/bin/sh +# +# ------------------------------------------------------ +# @@product_full@@ offline inspection script. +# ------------------------------------------------------ +# + +export DEFAULT_PROJECT_PATH=`pwd` + +IDE_BIN_HOME="$(dirname "$0")" +exec "$IDE_BIN_HOME/../Contents/MacOS/@@script_name@@" inspect $* diff --git a/bin/nix/idea.sh b/bin/nix/idea.sh deleted file mode 100755 index 32360201fba4..000000000000 --- a/bin/nix/idea.sh +++ /dev/null @@ -1,162 +0,0 @@ -#!/bin/sh -# -# ------------------------------------------------------ -# IntelliJ IDEA Startup Script for Unix -# ------------------------------------------------------ -# - -# --------------------------------------------------------------------- -# Before you run IntelliJ IDEA specify the location of the -# JDK 1.6 installation directory which will be used for running it. - -JDK="$IDEA_JDK" -if [ -z "$JDK" ]; then - OS_TYPE=`uname -s` - JDK="$JDK_HOME" - # if JDK_HOME not defined and JAVA_HOME looks correct (tools.jar isn't included in Mac OS X Java bundle) - if [ -z "$JDK" ] && ([ "$OS_TYPE" = "Darwin" -a -x "$JAVA_HOME/bin/java" ] || [ -f "$JAVA_HOME/lib/tools.jar" ]); then - JDK="$JAVA_HOME" - fi - - if [ -z "$JDK" ]; then - # try to get the JDK path from java binary path - JAVA_BIN_PATH=`which java` - if [ -n "$JAVA_BIN_PATH" ]; then - if [ "$OS_TYPE" = "Darwin" ]; then - if [ -h "$JAVA_BIN_PATH" ]; then - JAVA_LOCATION=`readlink "$JAVA_BIN_PATH" | xargs dirname | xargs dirname | xargs dirname` - if [ -x "$JAVA_LOCATION/CurrentJDK/Home/bin/java" ]; then - JDK="$JAVA_LOCATION/CurrentJDK/Home" - fi - else - JAVA_LOCATION=`echo "$JAVA_BIN_PATH" | xargs dirname | xargs dirname` - if [ -f "$JAVA_LOCATION/lib/tools.jar" ]; then - JDK="$JAVA_LOCATION" - fi - fi - elif [ "$OS_TYPE" = "FreeBSD" ]; then - JAVA_LOCATION=`JAVAVM_DRYRUN=yes java | grep '^JAVA_HOME' | cut -c11-` - if [ -x "$JAVA_LOCATION/bin/java" ]; then - JDK="$JAVA_LOCATION" - fi - elif [ "$OS_TYPE" = "SunOS" ]; then - JAVA_LOCATION="/usr/jdk/latest" - if [ -x "$JAVA_LOCATION/bin/java" ]; then - JDK="$JAVA_LOCATION" - fi - fi - if [ -z "$JDK" -a -x "/bin/readlink" ]; then - JAVA_LOCATION=`readlink -f "$JAVA_BIN_PATH"` - case "$JAVA_LOCATION" in - */jre/bin/java) - JAVA_LOCATION=`echo "$JAVA_LOCATION" | xargs dirname | xargs dirname | xargs dirname` ;; - *) - JAVA_LOCATION=`echo "$JAVA_LOCATION" | xargs dirname | xargs dirname` ;; - esac - if [ -x "$JAVA_LOCATION/bin/java" ]; then - JDK="$JAVA_LOCATION" - fi - fi - fi - fi - - if [ -z "$JDK" ]; then - echo "ERROR: cannot start IntelliJ IDEA." - echo "No JDK found. Please validate either IDEA_JDK, JDK_HOME or JAVA_HOME environment variable points to valid JDK installation." - echo - echo "Press Enter to continue." - read IGNORE - exit 1 - fi -fi - -VERSION_LOG=`mktemp -t java.version.log.XXXXXX` -$JDK/bin/java -version 2> "$VERSION_LOG" -grep 'OpenJDK' "$VERSION_LOG" -OPEN_JDK=$? -grep '64-Bit' "$VERSION_LOG" -BITS=$? -rm "$VERSION_LOG" -if [ $OPEN_JDK -eq 0 ]; then - echo "WARNING: You are launching IDE using OpenJDK Java runtime." - echo - echo " THIS IS STRICTLY UNSUPPORTED DUE TO KNOWN PERFORMANCE AND GRAPHICS PROBLEMS!" - echo - echo "NOTE: If you have both Oracle (Sun) JDK and OpenJDK installed" - echo " please validate either IDEA_JDK, JDK_HOME, or JAVA_HOME environment variable points to valid Oracle (Sun) JDK installation." - echo " See http://ow.ly/6TuKQ for more info on switching default JDK" - echo - echo "Press Enter to continue." - read IGNORE -fi -if [ $BITS -eq 0 ]; then - BITS="64" -else - BITS="" -fi - -#-------------------------------------------------------------------------- -# Ensure the IDE_HOME var for this script points to the -# home directory where IntelliJ IDEA is installed on your system. - -SCRIPT_LOCATION=$0 -# step through symlinks to find where the script really is -while [ -L "$SCRIPT_LOCATION" ]; do - SCRIPT_LOCATION=`readlink -e "$SCRIPT_LOCATION"` -done - -IDE_HOME=`dirname "$SCRIPT_LOCATION"`/.. -IDE_BIN_HOME=`dirname "$SCRIPT_LOCATION"` - -if [ -n "$IDEA_PROPERTIES" ]; then - IDE_PROPERTIES_PROPERTY="-Didea.properties.file=\"$IDEA_PROPERTIES\"" -fi - -MAIN_CLASSNAME="$IDEA_MAIN_CLASS_NAME" -if [ -z "$MAIN_CLASS_NAME" ]; then - MAIN_CLASS_NAME="com.intellij.idea.Main" -fi - -VM_OPTIONS_FILE="$IDEA_VM_OPTIONS" -if [ -z "$VM_OPTIONS_FILE" ]; then - VM_OPTIONS_FILE="$IDE_BIN_HOME/idea.vmoptions" -fi - -# if VM options file exists - use it -if [ -r "$VM_OPTIONS_FILE" ]; then - JVM_ARGS=`cat "$VM_OPTIONS_FILE" | grep -ve "^#.*" | tr '\n' ' '` - JVM_ARGS="$JVM_ARGS -Djb.vmOptionsFile=\"$VM_OPTIONS_FILE\"" - # only extract properties (not VM options) from Info.plist - INFO_PLIST_PARSER_OPTIONS="" -else - [ "$BITS" == "64" ] && INFO_PLIST_PARSER_OPTIONS=" 64" || INFO_PLIST_PARSER_OPTIONS=" 32" -fi - -# in Mac OS X ./Contents/Info.plist describes all VM options & system properties -if [ -f "$IDE_HOME/Contents/Info.plist" -a -z "$IDE_PROPERTIES_PROPERTY" ]; then - MAC_VM_OPTIONS="`osascript \"$IDE_BIN_HOME/info_plist_parser.scpt\"$INFO_PLIST_PARSER_OPTIONS`" -fi - -REQUIRED_JVM_ARGS="-Xbootclasspath/a:../lib/boot.jar -Didea.paths.selector=@@system_selector@@ $IDE_PROPERTIES_PROPERTY $REQUIRED_JVM_ARGS" - -JVM_ARGS="$JVM_ARGS $REQUIRED_JVM_ARGS $MAC_VM_OPTIONS" - -CLASSPATH=../lib/bootstrap.jar -CLASSPATH=$CLASSPATH:../lib/util.jar -CLASSPATH=$CLASSPATH:../lib/jdom.jar -CLASSPATH=$CLASSPATH:../lib/log4j.jar -CLASSPATH=$CLASSPATH:../lib/extensions.jar -CLASSPATH=$CLASSPATH:../lib/trove4j.jar -CLASSPATH=$CLASSPATH:../lib/jna.jar -CLASSPATH=$CLASSPATH:$JDK/lib/tools.jar -CLASSPATH=$CLASSPATH:$IDEA_CLASSPATH -export CLASSPATH - -LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH -export LD_LIBRARY_PATH - -cd "$IDE_BIN_HOME" -while true ; do - eval $JDK/bin/java $JVM_ARGS -Djb.restart.code=88 $MAIN_CLASS_NAME $* - test $? -ne 88 && break -done diff --git a/bin/nix/inspect.sh b/bin/nix/inspect.sh deleted file mode 100644 index 5fdfa97c1bee..000000000000 --- a/bin/nix/inspect.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -export DEFAULT_PROJECT_PATH=`pwd` - -# Launch inspection tool -IDEA_BIN_HOME="$( cd "$( dirname "$0" )" && pwd )" -$IDEA_BIN_HOME/idea.sh inspect $* \ No newline at end of file diff --git a/bin/nix/inspect_diff.sh b/bin/nix/inspect_diff.sh deleted file mode 100644 index d14cca36231e..000000000000 --- a/bin/nix/inspect_diff.sh +++ /dev/null @@ -1,64 +0,0 @@ -#!/bin/sh -# -# ------------------------------------------------------ -# IntelliJ IDEA Startup Script for Unix -# ------------------------------------------------------ -# - -# --------------------------------------------------------------------- -# Before you run IntelliJ IDEA specify the location of the -# JDK 1.5 installation directory which will be used for running IDEA -# --------------------------------------------------------------------- -if [ -z "$IDEA_JDK" ]; then -IDEA_JDK=$JDK_HOME -if [ -z "$IDEA_JDK" ]; then -echo ERROR: cannot start IntelliJ IDEA. -echo No JDK found to run IDEA. Please validate either IDEA_JDK or JDK_HOME points to valid JDK installation -fi -fi - -#-------------------------------------------------------------------------- -# Ensure the IDEA_HOME var for this script points to the -# home directory where IntelliJ IDEA is installed on your system. - -IDEA_HOME=`dirname "$0"`/.. -IDEA_BIN_HOME=`dirname "$0"` - -export JAVA_HOME -export IDEA_HOME - -if [ -n "$IDEA_PROPERTIES" ]; then -IDEA_PROPERTIES_PROPERTY=-Didea.properties.file=$IDEA_PROPERTIES -fi - -if [ -z "$IDEA_INSPECT_DIFF_CLASS_NAME" ]; then -IDEA_INSPECT_DIFF_CLASS_NAME="com.intellij.codeInspection.InspectionDiff" -fi - -if [ -z "$IDEA_VM_OPTIONS" ]; then -IDEA_VM_OPTIONS="$IDEA_HOME/bin/idea.vmoptions" -fi - -REQUIRED_JVM_ARGS="-Xbootclasspath/a:../lib/boot.jar -Didea.paths.selector=@@system_selector@@ $IDEA_PROPERTIES_PROPERTY $REQUIRED_JVM_ARGS" -JVM_ARGS=`tr '\n' ' ' < "$IDEA_VM_OPTIONS"` -JVM_ARGS="$JVM_ARGS $REQUIRED_JVM_ARGS" - -CLASSPATH=../lib/bootstrap.jar -CLASSPATH=$CLASSPATH:../lib/openapi.jar -CLASSPATH=$CLASSPATH:../lib/util.jar -CLASSPATH=$CLASSPATH:../lib/idea.jar -CLASSPATH=$CLASSPATH:../lib/resources_en.jar -CLASSPATH=$CLASSPATH:../lib/jdom.jar -CLASSPATH=$CLASSPATH:../lib/log4j.jar -CLASSPATH=$CLASSPATH:../lib/extensions.jar -CLASSPATH=$CLASSPATH:../lib/trove4j.jar -CLASSPATH=$CLASSPATH:$IDEA_JDK/lib/tools.jar -CLASSPATH=$CLASSPATH:$IDEA_CLASSPATH - -export CLASSPATH - -LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH -export LD_LIBRARY_PATH - -cd "$IDEA_BIN_HOME" -exec $IDEA_JDK/bin/java $JVM_ARGS $IDEA_INSPECT_DIFF_CLASS_NAME $* diff --git a/bin/scripts/unix/idea.sh b/bin/scripts/unix/idea.sh new file mode 100755 index 000000000000..5ae94755ed69 --- /dev/null +++ b/bin/scripts/unix/idea.sh @@ -0,0 +1,155 @@ +#!/bin/sh +# +# --------------------------------------------------------------------- +# @@product_full@@ startup script. +# --------------------------------------------------------------------- +# + +OS_TYPE="`uname -s`" + +# --------------------------------------------------------------------- +# Locate a JDK installation directory which will be used to ruin the IDE. +# Try (in order): @@product_uc@@_JDK, JDK_HOME, JAVA_HOME, "java" in PATH. +# --------------------------------------------------------------------- +if [ -n "$@@product_uc@@_JDK" -a -x "$@@product_uc@@_JDK/bin/java" ]; then + JDK="$@@product_uc@@_JDK" +elif [ -n "$JDK_HOME" -a -x "$JDK_HOME/bin/java" ]; then + JDK="$JDK_HOME" +elif [ -n "$JAVA_HOME" -a -x "$JAVA_HOME/bin/java" ]; then + JDK="$JAVA_HOME" +else + JAVA_BIN_PATH=`which java` + if [ -n "$JAVA_BIN_PATH" ]; then + if [ "$OS_TYPE" = "FreeBSD" ]; then + JAVA_LOCATION=`JAVAVM_DRYRUN=yes java | grep '^JAVA_HOME' | cut -c11-` + if [ -x "$JAVA_LOCATION/bin/java" ]; then + JDK="$JAVA_LOCATION" + fi + elif [ "$OS_TYPE" = "SunOS" ]; then + JAVA_LOCATION="/usr/jdk/latest" + if [ -x "$JAVA_LOCATION/bin/java" ]; then + JDK="$JAVA_LOCATION" + fi + fi + + if [ -z "$JDK" -a -x "/bin/readlink" ]; then + JAVA_LOCATION=`readlink -f "$JAVA_BIN_PATH"` + case "$JAVA_LOCATION" in + */jre/bin/java) + JAVA_LOCATION=`echo "$JAVA_LOCATION" | xargs dirname | xargs dirname | xargs dirname` ;; + *) + JAVA_LOCATION=`echo "$JAVA_LOCATION" | xargs dirname | xargs dirname` ;; + esac + if [ -x "$JAVA_LOCATION/bin/java" ]; then + JDK="$JAVA_LOCATION" + fi + fi + fi +fi + +if [ -z "$JDK" ]; then + echo "ERROR: cannot start @@product_full@@." + echo "No JDK found. Please validate either @@product_uc@@_JDK, JDK_HOME or JAVA_HOME environment variable points to valid JDK installation." + echo + echo "Press Enter to continue." + read IGNORE + exit 1 +fi + +VERSION_LOG=`mktemp -t java.version.log.XXXXXX` +$JDK/bin/java -version 2> "$VERSION_LOG" +grep 'OpenJDK' "$VERSION_LOG" +OPEN_JDK=$? +grep '64-Bit' "$VERSION_LOG" +BITS=$? +rm "$VERSION_LOG" +if [ $OPEN_JDK -eq 0 ]; then + echo "WARNING: You are launching the IDE using OpenJDK Java runtime." + echo + echo " THIS IS STRICTLY UNSUPPORTED DUE TO KNOWN PERFORMANCE AND GRAPHICS PROBLEMS!" + echo + echo "NOTE: If you have both Oracle (Sun) JDK and OpenJDK installed" + echo " please validate either @@product_uc@@_JDK, JDK_HOME, or JAVA_HOME environment variable points to valid Oracle (Sun) JDK installation." + echo " See http://ow.ly/6TuKQ for more info on switching default JDK." + echo + echo "Press Enter to continue." + read IGNORE +fi +if [ $BITS -eq 0 ]; then + BITS="64" +else + BITS="" +fi + +# --------------------------------------------------------------------- +# Ensure IDE_HOME points to the directory where the IDE is installed. +# --------------------------------------------------------------------- +SCRIPT_LOCATION=$0 +while [ -L "$SCRIPT_LOCATION" ]; do + SCRIPT_LOCATION=`readlink -e "$SCRIPT_LOCATION"` +done + +IDE_HOME=`dirname "$SCRIPT_LOCATION"`/.. +IDE_BIN_HOME=`dirname "$SCRIPT_LOCATION"` + +# --------------------------------------------------------------------- +# Collect JVM options and properties. +# --------------------------------------------------------------------- +if [ -n "$@@product_uc@@_PROPERTIES" ]; then + IDE_PROPERTIES_PROPERTY="-Didea.properties.file=\"$@@product_uc@@_PROPERTIES\"" +fi + +MAIN_CLASS_NAME="$@@product_uc@@_MAIN_CLASS_NAME" +if [ -z "$MAIN_CLASS_NAME" ]; then + MAIN_CLASS_NAME="com.intellij.idea.Main" +fi + +VM_OPTIONS_FILE="$@@product_uc@@_VM_OPTIONS" +if [ -z "$VM_OPTIONS_FILE" ]; then + VM_OPTIONS_FILE="$IDE_BIN_HOME/@@vm_options@@$BITS.vmoptions" +fi + +if [ -r "$VM_OPTIONS_FILE" ]; then + VM_OPTIONS=`cat "$VM_OPTIONS_FILE" | grep -ve "^#.*" | tr '\n' ' '` + VM_OPTIONS="$VM_OPTIONS -Djb.vmOptionsFile=\"$VM_OPTIONS_FILE\"" +fi + +IS_EAP="@@isEap@@" +if [ "$IS_EAP" = "true" ]; then + OS_NAME=`echo $OS_TYPE | tr '[:upper:]' '[:lower:]'` + AGENT_LIB="yjpagent-$OS_NAME$BITS" + if [ -f "$IDE_BIN_HOME/lib$AGENT_LIB.so" ]; then + AGENT="-agentlib:$AGENT_LIB=disablej2ee,disablecounts,disablealloc,sessionname=@@system_selector@@" + fi +fi + +COMMON_JVM_ARGS="-Xbootclasspath/a:../lib/boot.jar -Didea.paths.selector=@@system_selector@@ $IDE_PROPERTIES_PROPERTY" +IDE_JVM_ARGS="@@ide_jvm_args@@" +ALL_JVM_ARGS="$VM_OPTIONS $COMMON_JVM_ARGS $IDE_JVM_ARGS $AGENT $REQUIRED_JVM_ARGS" + +TOOLS_JAR="@@tools_jar@@" +CLASSPATH="../lib/bootstrap.jar" +CLASSPATH="$CLASSPATH:../lib/util.jar" +CLASSPATH="$CLASSPATH:../lib/jdom.jar" +CLASSPATH="$CLASSPATH:../lib/log4j.jar" +CLASSPATH="$CLASSPATH:../lib/extensions.jar" +CLASSPATH="$CLASSPATH:../lib/trove4j.jar" +CLASSPATH="$CLASSPATH:../lib/jna.jar" +if [ "$TOOLS_JAR" = "true" ]; then + CLASSPATH="$CLASSPATH:$JDK/lib/tools.jar" +fi +if [ -n "$@@product_uc@@_CLASSPATH" ]; then + CLASSPATH="$CLASSPATH:$@@product_uc@@_CLASSPATH" +fi +export CLASSPATH + +export LD_LIBRARY_PATH="$IDE_BIN_HOME:$LD_LIBRARY_PATH" + +# --------------------------------------------------------------------- +# Run the IDE. +# --------------------------------------------------------------------- +cd "$IDE_BIN_HOME" +while true ; do + eval $JDK/bin/java $ALL_JVM_ARGS -Djb.restart.code=88 $MAIN_CLASS_NAME $* + test $? -ne 88 && break +done diff --git a/bin/scripts/unix/inspect.sh b/bin/scripts/unix/inspect.sh new file mode 100644 index 000000000000..4b4f140e9a69 --- /dev/null +++ b/bin/scripts/unix/inspect.sh @@ -0,0 +1,11 @@ +#!/bin/sh +# +# ------------------------------------------------------ +# @@product_full@@ offline inspection script. +# ------------------------------------------------------ +# + +export DEFAULT_PROJECT_PATH=`pwd` + +IDE_BIN_HOME="$(dirname "$0")" +exec "$IDE_BIN_HOME/@@script_name@@" inspect $* diff --git a/bin/scripts/win/append.bat b/bin/scripts/win/append.bat new file mode 100644 index 000000000000..abe68875324b --- /dev/null +++ b/bin/scripts/win/append.bat @@ -0,0 +1,14 @@ +IF NOT DEFINED ACC GOTO empty_acc +IF "%SEPARATOR%" == "" GOTO no_separator +SET ACC=%ACC%%SEPARATOR%%1 +GOTO end + +:no_separator +SET ACC=%ACC% %1 +GOTO end + +:empty_acc +SET ACC=%1 +GOTO end + +:end diff --git a/bin/win/idea.bat b/bin/scripts/win/idea.bat similarity index 51% rename from bin/win/idea.bat rename to bin/scripts/win/idea.bat index 604239cef682..8b4d9c7ea8ce 100644 --- a/bin/win/idea.bat +++ b/bin/scripts/win/idea.bat @@ -1,47 +1,44 @@ @ECHO OFF ::---------------------------------------------------------------------- -:: IntelliJ IDEA Startup Script +:: @@product_full@@ startup script. ::---------------------------------------------------------------------- :: --------------------------------------------------------------------- -:: Location of the JDK 1.6 installation directory -:: which will be used for running the IDE. +:: Locate a JDK installation directory which will be used to ruin the IDE. +:: Try (in order): @@product_uc@@_JDK, JDK_HOME, JAVA_HOME. :: --------------------------------------------------------------------- -SET JDK=%IDEA_JDK% +SET JDK=%@@product_uc@@_JDK% IF "%JDK%" == "" SET JDK=%JDK_HOME% +IF "%JDK%" == "" SET JDK=%JAVA_HOME% IF "%JDK%" == "" GOTO error -SET JAVA_EXE=%JDK%\jre\bin\java.exe +SET JAVA_EXE=%JDK%\bin\java.exe IF NOT EXIST "%JAVA_EXE%" GOTO error :: --------------------------------------------------------------------- -:: Location of the directory where the IDE is installed -:: In most cases you do not need to change the settings below. +:: Ensure IDE_HOME points to the directory where the IDE is installed. :: --------------------------------------------------------------------- SET IDE_BIN_DIR=%~dp0 SET IDE_HOME=%IDE_BIN_DIR%\.. -SET MAIN_CLASS_NAME=%IDEA_MAIN_CLASS_NAME% +SET MAIN_CLASS_NAME=%@@product_uc@@_MAIN_CLASS_NAME% IF "%MAIN_CLASS_NAME%" == "" SET MAIN_CLASS_NAME=com.intellij.idea.Main -IF NOT "%IDEA_PROPERTIES%" == "" SET IDE_PROPERTIES_PROPERTY="-Didea.properties.file=%IDEA_PROPERTIES%" +IF NOT "%@@product_uc@@_PROPERTIES%" == "" SET IDE_PROPERTIES_PROPERTY="-Didea.properties.file=%@@product_uc@@_PROPERTIES%" :: --------------------------------------------------------------------- -:: You may specify your own JVM arguments in .vmoptions file. -:: Put one option per line there. +:: Collect JVM options and properties. :: --------------------------------------------------------------------- -SET VM_OPTIONS_FILE=%IDE_BIN_DIR%\idea.exe.vmoptions +SET VM_OPTIONS_FILE=%IDE_BIN_DIR%\@@vm_options@@.vmoptions SET ACC= FOR /F "usebackq delims=" %%i IN ("%VM_OPTIONS_FILE%") DO CALL "%IDE_BIN_DIR%\append.bat" "%%i" -SET REQUIRED_JVM_ARGS="-Xbootclasspath/a:%IDE_HOME%/lib/boot.jar" -Didea.paths.selector=@@system_selector@@ %IDE_PROPERTIES_PROPERTY% -SET SPECIAL_JVM_ARGS= -SET JVM_ARGS=%ACC% %REQUIRED_JVM_ARGS% %SPECIAL_JVM_ARGS% %REQUIRED_IDEA_JVM_ARGS% - -SET OLD_PATH=%PATH% -SET PATH=%IDE_BIN_DIR%;%PATH% +SET COMMON_JVM_ARGS="-Xbootclasspath/a:%IDE_HOME%/lib/boot.jar" -Didea.paths.selector=@@system_selector@@ %IDE_PROPERTIES_PROPERTY% +SET IDE_JVM_ARGS=@@ide_jvm_args@@ +SET ALL_JVM_ARGS=%ACC% %COMMON_JVM_ARGS% %IDE_JVM_ARGS% %REQUIRED_JVM_ARGS% +SET TOOLS_JAR=@@tools_jar@@ SET CLASS_PATH=%IDE_HOME%\lib\bootstrap.jar SET CLASS_PATH=%CLASS_PATH%;%IDE_HOME%\lib\util.jar SET CLASS_PATH=%CLASS_PATH%;%IDE_HOME%\lib\jdom.jar @@ -49,24 +46,24 @@ SET CLASS_PATH=%CLASS_PATH%;%IDE_HOME%\lib\log4j.jar SET CLASS_PATH=%CLASS_PATH%;%IDE_HOME%\lib\extensions.jar SET CLASS_PATH=%CLASS_PATH%;%IDE_HOME%\lib\trove4j.jar SET CLASS_PATH=%CLASS_PATH%;%IDE_HOME%\lib\jna.jar -SET CLASS_PATH=%CLASS_PATH%;%JDK%\lib\tools.jar +IF "%TOOLS_JAR%" == "true" SET CLASS_PATH=%CLASS_PATH%;%JDK%\lib\tools.jar +IF NOT "%@@product_uc@@_CLASS_PATH%" == "" SET CLASS_PATH=%CLASS_PATH%;%@@product_uc@@_CLASS_PATH% :: --------------------------------------------------------------------- -:: You may specify additional class paths in IDEA_CLASS_PATH variable. -:: It is a good idea to specify paths to your plugins in this variable. +:: Run the IDE. :: --------------------------------------------------------------------- -IF NOT "%IDEA_CLASS_PATH%" == "" SET CLASS_PATH=%CLASS_PATH%;%IDEA_CLASS_PATH% +SET OLD_PATH=%PATH% +SET PATH=%IDE_BIN_DIR%;%PATH% -"%JAVA_EXE%" %JVM_ARGS% -cp "%CLASS_PATH%" %MAIN_CLASS_NAME% %* +"%JAVA_EXE%" %ALL_JVM_ARGS% -cp "%CLASS_PATH%" %MAIN_CLASS_NAME% %* SET PATH=%OLD_PATH% GOTO end :error -ECHO --------------------------------------------------------------------- -ECHO ERROR: cannot start IntelliJ IDEA. -ECHO No JDK found. Please validate either IDEA_JDK or JDK_HOME points to valid JDK installation. -ECHO --------------------------------------------------------------------- +ECHO ERROR: cannot start @@product_full@@. +ECHO No JDK found. Please validate either @@product_uc@@_JDK, JDK_HOME or JAVA_HOME points to valid JDK installation. +ECHO PAUSE :end diff --git a/bin/scripts/win/inspect.bat b/bin/scripts/win/inspect.bat new file mode 100644 index 000000000000..e5c12bdef3b4 --- /dev/null +++ b/bin/scripts/win/inspect.bat @@ -0,0 +1,10 @@ +@ECHO OFF + +::---------------------------------------------------------------------- +:: @@product_full@@ offline inspection script. +::---------------------------------------------------------------------- + +SET DEFAULT_PROJECT_PATH=%CD% + +SET IDE_BIN_DIR=%~dp0 +CALL "%IDE_BIN_DIR%\@@script_name@@" inspect %* diff --git a/bin/win/append.bat b/bin/win/append.bat deleted file mode 100644 index 37bd7f4d7f31..000000000000 --- a/bin/win/append.bat +++ /dev/null @@ -1,14 +0,0 @@ -if not defined ACC goto emptyacc -if "%SEPARATOR%" == "" goto noseparator -set ACC=%ACC%%SEPARATOR%%1 -goto end - -:noseparator -set ACC=%ACC% %1 -goto end - -:emptyacc -set ACC=%1 -goto end - -:end \ No newline at end of file diff --git a/bin/win/inspect.bat b/bin/win/inspect.bat deleted file mode 100644 index 2b524d986b76..000000000000 --- a/bin/win/inspect.bat +++ /dev/null @@ -1,2 +0,0 @@ -@echo off -call idea.bat inspect %* diff --git a/bin/win/inspect_diff.bat b/bin/win/inspect_diff.bat deleted file mode 100644 index eb1df39f446e..000000000000 --- a/bin/win/inspect_diff.bat +++ /dev/null @@ -1,75 +0,0 @@ -@ECHO OFF - -::---------------------------------------------------------------------- -:: IntelliJ IDEA Startup Script -::---------------------------------------------------------------------- - -:: --------------------------------------------------------------------- -:: Location of the JDK 1.6 installation directory -:: which will be used for running the IDE. -:: --------------------------------------------------------------------- -SET JDK=%IDEA_JDK% -IF "%JDK%" == "" SET JDK=%JDK_HOME% -IF "%JDK%" == "" GOTO error - -SET JAVA_EXE=%JDK%\jre\bin\java.exe -IF NOT EXIST "%JAVA_EXE%" GOTO error - -:: --------------------------------------------------------------------- -:: Location of the directory where the IDE is installed -:: In most cases you do not need to change the settings below. -:: --------------------------------------------------------------------- -SET IDE_BIN_DIR=%~dp0 -SET IDE_HOME=%IDE_BIN_DIR%\.. - -SET MAIN_CLASS_NAME=%IDEA_INSPECT_DIFF_CLASS_NAME% -IF "%MAIN_CLASS_NAME%" == "" SET MAIN_CLASS_NAME=com.intellij.codeInspection.InspectionDiff - -IF NOT "%IDEA_PROPERTIES%" == "" SET IDE_PROPERTIES_PROPERTY="-Didea.properties.file=%IDEA_PROPERTIES%" - -:: --------------------------------------------------------------------- -:: You may specify your own JVM arguments in .vmoptions file. -:: Put one option per line there. -:: --------------------------------------------------------------------- -SET VM_OPTIONS_FILE=%IDE_BIN_DIR%\idea.exe.vmoptions -SET ACC= -FOR /F "usebackq delims=" %%i IN ("%VM_OPTIONS_FILE%") DO CALL "%IDE_BIN_DIR%\append.bat" "%%i" - -SET REQUIRED_JVM_ARGS="-Xbootclasspath/a:%IDE_HOME%/lib/boot.jar" -Didea.paths.selector=@@system_selector@@ %IDE_PROPERTIES_PROPERTY% -SET SPECIAL_JVM_ARGS= -SET JVM_ARGS=%ACC% %REQUIRED_JVM_ARGS% %SPECIAL_JVM_ARGS% %REQUIRED_IDEA_JVM_ARGS% - -SET OLD_PATH=%PATH% -SET PATH=%IDE_BIN_DIR%;%PATH% - -SET CLASS_PATH=%IDE_HOME%\lib\bootstrap.jar -SET CLASS_PATH=%CLASS_PATH%;%IDE_HOME%\lib\idea.jar -SET CLASS_PATH=%CLASS_PATH%;%IDE_HOME%\lib\resources_en.jar -SET CLASS_PATH=%CLASS_PATH%;%IDE_HOME%\lib\openapi.jar -SET CLASS_PATH=%CLASS_PATH%;%IDE_HOME%\lib\util.jar -SET CLASS_PATH=%CLASS_PATH%;%IDE_HOME%\lib\jdom.jar -SET CLASS_PATH=%CLASS_PATH%;%IDE_HOME%\lib\log4j.jar -SET CLASS_PATH=%CLASS_PATH%;%IDE_HOME%\lib\extensions.jar -SET CLASS_PATH=%CLASS_PATH%;%IDE_HOME%\lib\trove4j.jar -SET CLASS_PATH=%CLASS_PATH%;%IDE_HOME%\lib\jna.jar -SET CLASS_PATH=%CLASS_PATH%;%JDK%\lib\tools.jar - -:: --------------------------------------------------------------------- -:: You may specify additional class paths in IDEA_CLASS_PATH variable. -:: It is a good idea to specify paths to your plugins in this variable. -:: --------------------------------------------------------------------- -IF NOT "%IDEA_CLASS_PATH%" == "" SET CLASS_PATH=%CLASS_PATH%;%IDEA_CLASS_PATH% - -"%JAVA_EXE%" %JVM_ARGS% -cp "%CLASS_PATH%" %MAIN_CLASS_NAME% %* - -SET PATH=%OLD_PATH% -GOTO end - -:error -ECHO --------------------------------------------------------------------- -ECHO ERROR: cannot start IntelliJ IDEA. -ECHO No JDK found. Please validate either IDEA_JDK or JDK_HOME points to valid JDK installation. -ECHO --------------------------------------------------------------------- -PAUSE - -:end diff --git a/build/Install-Linux-tar.txt b/build/Install-Linux-tar.txt index d51b005ba33d..8c9f0481fd44 100644 --- a/build/Install-Linux-tar.txt +++ b/build/Install-Linux-tar.txt @@ -1,42 +1,42 @@ -IntelliJ IDEA +@@product_full@@ INSTALLATION INSTRUCTIONS =============================================================================== Linux Installation Instructions ------------------------------------------------------------------------------ - 1. Unpack the IntelliJ IDEA distribution file that you downloaded to + 1. Unpack the @@product_full@@ distribution archive that you downloaded to where you wish to install the program. We will refer to this destination location as your {installation home} below. 2. Open a console and cd into "{installation home}/bin" and type: - ./idea.sh + ./@@product@@.sh to start the application. 3. [OPTIONAL] Add the "{installation home}/bin" to your PATH environmental - variable so that you may start IntelliJ IDEA from any directory. + variable so that you may start @@product_full@@ from any directory. - 4. [OPTIONAL] To adjust the value of JVM heap size open idea.vmoptions and - modify the -Xms and -Xmx parameters. + 4. [OPTIONAL] To adjust the value of JVM heap size open @@product@@.vmoptions + (@@product@@64.vmoptions for 64-bit JDK), and modify the -Xms and -Xmx parameters. [OPTIONAL] Changing location of "config" and "system" directory ------------------------------------------------------------------------------ - By default IDEA stores all your settings under ~/.IntelliJIdea10/config directory - and stores data cache under ~/.IntelliJIdea10/system directory. + By default @@product_full@@ stores all your settings under ~/.@@system_selector@@/config directory + and stores data cache under ~/.@@system_selector@@/system directory. If you want to change these settings, 1. Open a console and cd into "{installation home}/bin" 2. Open file "idea.properties" in an editor. You should find strings like - idea.system.path=~/.IntelliJIdea10/system + idea.system.path=~/.@@settings_dir@@/system and - idea.config.path=~/.IntelliJIdea10/config + idea.config.path=~/.@@settings_dir@@/config and change them. @@ -48,4 +48,4 @@ INSTALLATION INSTRUCTIONS Enjoy! --IntelliJ IDEA Development Team +-@@product_full@@ Development Team diff --git a/build/images/idea_CE128.png b/build/images/idea_CE128.png deleted file mode 100644 index 5b04015a5588..000000000000 Binary files a/build/images/idea_CE128.png and /dev/null differ diff --git a/build/images/idea_CE16.png b/build/images/idea_CE16.png deleted file mode 100644 index c0e931fc86c9..000000000000 Binary files a/build/images/idea_CE16.png and /dev/null differ diff --git a/build/images/idea_CE32.png b/build/images/idea_CE32.png deleted file mode 100644 index 0c94898e69fe..000000000000 Binary files a/build/images/idea_CE32.png and /dev/null differ diff --git a/build/images/idea_CE48.png b/build/images/idea_CE48.png deleted file mode 100644 index 225733c00f1c..000000000000 Binary files a/build/images/idea_CE48.png and /dev/null differ diff --git a/build/scripts/dist.gant b/build/scripts/dist.gant index dab08a968c34..92ef5de51cb3 100644 --- a/build/scripts/dist.gant +++ b/build/scripts/dist.gant @@ -1,3 +1,19 @@ +/* + * Copyright 2000-2012 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + import org.jetbrains.jps.Jps import static org.jetbrains.jps.idea.IdeaProjectLoader.guessHome @@ -21,15 +37,13 @@ class Paths { distAll = "$sandbox/dist.all.ce" distUnix = "$sandbox/dist.unix.ce" distMac = "$sandbox/dist.mac.ce" - artifacts = "$sandbox/artifacts" artifacts_core = "$artifacts/core" } } -setProperty("paths", new Paths(out)) - def paths = new Paths(out) +setProperty("paths", paths) target(compile: "Compile project") { loadProject() @@ -47,87 +61,76 @@ target(compile: "Compile project") { project.makeProduction() } -String appInfoFile() { +private String appInfoFile() { return "${this["community-resources"].output}/idea/IdeaApplicationInfo.xml" } -def wire_build_date(String buildNumber) { - ant.tstamp() - ant.replace(token: "__BUILD_NUMBER__", value: buildNumber, file: appInfoFile()) - ant.replace(token: "__BUILD_DATE__", value: DSTAMP, file: appInfoFile()) -} - target('default': 'The default target') { - depends(compile) + depends([compile]) // load ApplicationInfo.xml properties ant.xmlproperty(file: appInfoFile(), collapseAttributes: "true") - layoutAll( - buildNumber: "IC-$snapshot", - version: "IdeaX", - system_selector: "IdeaIC${p("component.version.major")}", - system_selector_mac: "IntelliJIdea${p("component.version.major")}CE", - home, out) + layoutAll([buildNumber: "IC-$snapshot", + system_selector: "IdeaIC${p("component.version.major")}", + tools_jar: true], + home, null, paths) } -public def layoutAll(Map args, String home, String out) { - Paths paths = new Paths(out) +def layoutAll(Map args, String home, String out, Paths _paths = null) { + Paths paths = _paths != null ? _paths : new Paths(out) - wire_build_date(args.buildNumber) + wireBuildDate(args.buildNumber, appInfoFile()) + ant.echo(message: args.buildNumber, file: "$paths.distAll/build.txt") def layouts = includeFile("$home/build/scripts/layouts.gant") layouts.layoutFull(home, paths.distAll) - - ant.echo(message: args.buildNumber, file: "$paths.distAll/build.txt") - ant.copy(todir: "$paths.distAll/license", preservelastmodified: "true") { - fileset(dir: "$home/license") - } - - ant.copy(file: "$home/LICENSE.txt", todir: "$paths.distAll", preservelastmodified: "true") - - layoutMac(args, home, paths) - layoutLinux(args, home, paths) - layoutWin(args, home, paths) - layouts.layout_core(home, paths.artifacts_core) + + layout(paths.distAll) { + dir("bin") { + fileset(dir: "${home}/bin") { include(name: "*.*") } + } + dir("license") { + fileset(dir: "${home}/license") + } + fileset(file: "${home}/LICENSE.txt") + } + patchPropertiesFile(paths.distAll) + + layoutWin(args, home, paths) + layoutMac(args, home, paths) + layoutUnix(args, home, paths) + + buildWinZip("$paths.artifacts/idea${args.buildNumber}.win.zip", [paths.distAll, paths.distWin]) + + def macAppRoot = isEap() ? "${p("component.version.codename")}-${args.buildNumber}.app" : "IntelliJ IDEA ${p("component.version.major")} CE.app" + buildMacZip(macAppRoot, "$paths.artifacts/idea${args.buildNumber}.mac.zip", [paths.distAll, paths.distMac]) + + buildTarGz("idea-${args.buildNumber}", "$paths.artifacts/idea${args.buildNumber}.tar", [paths.distAll, paths.distUnix]) } -private def layoutWin(Map args, String home, Paths paths) { - layout("$paths.distWin") { +private layoutWin(Map args, String home, Paths paths) { + String target = paths.distWin + + layout(target) { dir("bin") { - fileset(dir: "$home/bin") { include(name: "*.*") } fileset(dir: "$home/bin/win") } } - ant.replace(file: "$paths.distWin/bin/idea.bat") { - replacefilter(token: "@@system_selector@@", value: args.system_selector) - } - ant.replace(file: "$paths.distWin/bin/inspect_diff.bat") { - replacefilter(token: "@@system_selector@@", value: args.system_selector) - } + ant.copy(file: "$home/platform/icons/src/idea_CE.ico", tofile: "$target/bin/idea.ico") - patchPropertiesFile(paths.distWin) - ant.echo(file: "$paths.distWin/bin/idea.exe.vmoptions", message: vmoptions32().replace(' ', '\n')) - - def winZipPath = "$paths.artifacts/idea${args.buildNumber}.win.zip" - ant.zip(zipfile: winZipPath) { - fileset(dir: paths.distAll) - fileset(dir: paths.distWin) - } - notifyArtifactBuilt(winZipPath) + winScripts(target, home, "idea.bat", args) + winVMOptions(target, null, "idea.exe") } -private def layoutMac(Map args, String home, Paths paths) { - project.stage("Cleaning up sandbox folder") - args["executable"] = "idea" - args["bundle_name"] = "IntelliJ IDEA" - args["bundleIdentifier"] = "com.jetbrains.intellij.ce" - args["platform_prefix"] = "Idea" - args["doc_types"] = """ - CFBundleDocumentTypes - +private layoutMac(Map _args, String home, Paths paths) { + String target = paths.distMac + + Map args = new HashMap(_args) + args.bundleIdentifier = "com.jetbrains.intellij.ce" + args.doc_types = """ CFBundleTypeExtensions @@ -140,96 +143,24 @@ private def layoutMac(Map args, String home, Paths paths) { CFBundleTypeRole Editor - """ - args["idea.properties.path"] = "$home/bin/idea.properties" - if (!isEap()) { - args["idea.properties"] = ["idea.fatal.error.notification":"disabled"]; - } - def system_selector = args.system_selector - // TODO remove the next line when system_selector for Mac and other OS will be unified - system_selector = args.system_selector_mac - - layoutMacApp(paths.distMac, home, args) - - layout(paths.distMac) { - dir("bin") { - fileset(dir: "$home/bin") { include(name: "*.*") } - } - } - - ant.replace(file: "$paths.distMac/bin/idea.sh") { - replacefilter(token: "@@system_selector@@", value: system_selector) - } - ant.replace(file: "$paths.distMac/bin/inspect_diff.sh") { - replacefilter(token: "@@system_selector@@", value: system_selector) - } - - patchPropertiesFile(paths.distMac) - - def root = isEap() ? "${p("component.version.codename")}-${args.buildNumber}.app" : "IntelliJ IDEA ${p("component.version.major")} CE.app" - - def macZipPath = "$paths.artifacts/idea${args.buildNumber}.mac.zip" - ant.zip(zipfile: macZipPath) { - [paths.distAll, paths.distMac].each { - tarfileset(dir: it, prefix: root) { - exclude(name: "bin/*.sh") - exclude(name: "bin/idea.properties") - exclude(name: "Contents/MacOS/idea") - } - } - - tarfileset(dir: paths.distMac, filemode: "755", prefix: root) { - include(name: "bin/*.sh") - include(name: "Contents/MacOS/idea") - } - } - notifyArtifactBuilt(macZipPath) + args."idea.properties.path" = "$home/bin/idea.properties" + args.mac_no_yjp = true + layoutMacApp(target, home, args) } -def layoutLinux(Map args, String home, Paths paths) { - project.stage("tar.gz") - layout(paths.distUnix) { +private layoutUnix(Map args, String home, Paths paths) { + String target = paths.distUnix + + layout(target) { dir("bin") { - fileset(dir: "$home/bin") { include(name: "*.*") } fileset(dir: "$home/bin/linux") - fileset(dir: "$home/bin/nix") - fileset(dir: "$home/build/images") - } - fileset(dir: "$home/build", includes: "Install-Linux-tar.txt") - } - - ant.replace(file: "$paths.distUnix/bin/idea.sh") { - replacefilter(token: "@@system_selector@@", value: args.system_selector) - } - ant.replace(file: "$paths.distUnix/bin/inspect_diff.sh") { - replacefilter(token: "@@system_selector@@", value: args.system_selector) - } - - patchPropertiesFile(paths.distUnix) - - ant.echo(file: "$paths.distUnix/bin/idea.vmoptions", message: vmoptions32().replace(' ', '\n') ) - ant.fixcrlf(srcdir: "$paths.distUnix/bin", includes: "idea.vmoptions", eol: "unix") - ant.fixcrlf(srcdir: "$paths.distUnix/bin", includes: "*.sh", eol: "unix") - - def tarRoot = "idea-$args.buildNumber" - def tarPath = "$paths.artifacts/idea${args.buildNumber}.tar" - ant.tar(tarfile: tarPath) { - [paths.distAll, paths.distUnix].each { - tarfileset(dir: it, prefix: tarRoot) { - exclude(name: "bin/*.sh") - exclude(name: "bin/fsnotifier*") - } - } - - tarfileset(dir: paths.distUnix, filemode: "755", prefix: tarRoot) { - include(name: "bin/*.sh") - include(name: "bin/fsnotifier*") } } - def gzPath = "${tarPath}.gz" - ant.gzip(src: tarPath, zipfile: gzPath) - ant.delete(file: tarPath) - notifyArtifactBuilt(gzPath) + ant.copy(file: "$home/platform/icons/src/icon_CE.png", tofile: "$target/bin/idea.png") + + unixScripts(target, home, "idea.sh", args) + unixVMOptions(target, "idea") + unixReadme(target, home, args) } diff --git a/build/scripts/utils.gant b/build/scripts/utils.gant index 7c0ad815631b..c0db4e5f332e 100644 --- a/build/scripts/utils.gant +++ b/build/scripts/utils.gant @@ -1,3 +1,19 @@ +/* + * Copyright 2000-2012 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + import org.jetbrains.jps.Jps import org.jetbrains.jps.Module import org.jetbrains.jps.idea.IdeaProjectLoader @@ -18,17 +34,20 @@ binding.setVariable("guessJdk", { return javaHome }) -binding.setVariable("includeFile", {String filepath -> - Script s = groovyShell.parse(new File(filepath)) +binding.setVariable("includeFile", {String filePath -> + Script s = groovyShell.parse(new File(filePath)) s.setBinding(binding) s }) - binding.setVariable("isMac", { return System.getProperty("os.name").toLowerCase().startsWith("mac") }) +binding.setVariable("isWin", { + return System.getProperty("os.name").toLowerCase().startsWith("windows") +}) + binding.setVariable("isEap", { return "true" == p("component.version.eap") }) @@ -37,8 +56,15 @@ binding.setVariable("mem32", "-Xms128m -Xmx512m -XX:MaxPermSize=250m -XX:Reserve binding.setVariable("mem64", "-Xms128m -Xmx800m -XX:MaxPermSize=350m -XX:ReservedCodeCacheSize=64m") binding.setVariable("common_vmoptions", "-ea") -binding.setVariable("vmoptions32", {"$mem32 $common_vmoptions"}) -binding.setVariable("vmoptions64", {"$mem64 $common_vmoptions"}) +binding.setVariable("vmOptions", { "$common_vmoptions ${isEap() ? '-XX:+HeapDumpOnOutOfMemoryError' : ''}".trim() }) +binding.setVariable("vmOptions32", { "$mem32 ${vmOptions()}".trim() }) +binding.setVariable("vmOptions64", { "$mem64 ${vmOptions()}".trim() }) +binding.setVariable("vmOptions32yjp", { String systemSelector -> + "${vmOptions32()} -agentlib:yjpagent=disablej2ee,disablecounts,disablealloc,sessionname=$systemSelector".trim() +}) +binding.setVariable("vmOptions64yjp", { String systemSelector -> + "${vmOptions64()} -agentlib:yjpagent64=disablej2ee,disablecounts,disablealloc,sessionname=$systemSelector".trim() +}) binding.setVariable("isDefined", {String key -> try { @@ -138,6 +164,42 @@ if (suspendUntilDebuggerConnect == 'y') { -------------------------------------------^------^------^------^------^------^------^----------------------- """ } + +binding.setVariable("patchFiles", { List files, Map args, String marker = "__" -> + files.each { file -> + args.each { arg -> + ant.replace(file: file, token: "${marker}${arg.key}${marker}", value: arg.value) + } + } +}) + +binding.setVariable("copyAndPatchFile", { String file, String target, Map args, String marker = "__" -> + ant.copy(file: file, tofile: target, overwrite: "true") { + filterset(begintoken: marker, endtoken: marker) { + args.each { + filter(token: it.key, value: it.value) + } + } + } +}) + +binding.setVariable("copyAndPatchFiles", { Closure files, String target, Map args, String marker = "__" -> + ant.copy(todir: target, overwrite: "true") { + files() + + filterset(begintoken: marker, endtoken: marker) { + args.each { + filter(token: it.key, value: it.value) + } + } + } +}) + +binding.setVariable("wireBuildDate", { String buildNumber, String appInfoFile -> + ant.tstamp() + patchFiles([appInfoFile], ["BUILD_NUMBER": buildNumber, "BUILD_DATE": DSTAMP]) +}) + binding.setVariable("commonJvmArgs", { return [ "-ea", @@ -152,7 +214,6 @@ binding.setVariable("commonJvmArgs", { binding.setVariable("layoutMacApp", { String path, String ch, Map args -> ant.copy(todir: "$path/bin") { - fileset(dir: "$ch/bin/nix") fileset(dir: "$ch/bin/mac") } @@ -164,6 +225,7 @@ binding.setVariable("layoutMacApp", { String path, String ch, Map args -> format(property: "todayYear", pattern: "yyyy") } + String executable = args.executable != null ? args.executable : p("component.names.product").toLowerCase() String icns = "idea.icns" if (args.icns != null) { ant.delete(file: "$path/Contents/Resources/idea.icns") @@ -171,28 +233,132 @@ binding.setVariable("layoutMacApp", { String path, String ch, Map args -> icns = new File((String)args.icns).getName(); } - def version = isEap() ? "EAP " + args.buildNumber : p("component.version.major") + "." + p("component.version.minor") + String fullName = args.fullName != null ? args.fullName : p("component.names.fullname") + + String vmOptions = "${vmOptions()} -Xverify:none" + if (isEap() && !args.mac_no_yjp) { + vmOptions += " -agentlib:yjpagent=disablej2ee,disablecounts,disablealloc,sessionname=${args.system_selector}" + } + + String version = isEap() ? "EAP $args.buildNumber" : "${p("component.version.major")}.${p("component.version.minor")}" + + args.get("idea.properties", [:])["idea.fatal.error.notification"] = isEap() ? "enabled" : "disabled"; + String properties = readIdeaProperties(args) ant.replace(file: "$path/Contents/Info.plist") { replacefilter(token: "@@build@@", value: args.buildNumber) - replacefilter(token: "@@doc_types@@", value: args.get("doc_types", "")) - replacefilter(token: "@@executable@@", value: args.executable) + replacefilter(token: "@@doc_types@@", value: ifNull(args.doc_types, "")) + replacefilter(token: "@@executable@@", value: executable) replacefilter(token: "@@icns@@", value: icns) - replacefilter(token: "@@bundle_name@@", value: args.bundle_name) + replacefilter(token: "@@bundle_name@@", value: fullName) replacefilter(token: "@@bundle_identifier@@", value: args.bundleIdentifier) replacefilter(token: "@@year@@", value: "$todayYear") - replacefilter(token: "@@version@@", value: version) - replacefilter(token: "@@vmoptions@@", value: "$common_vmoptions -Xverify:none") + replacefilter(token: "@@vmoptions@@", value: vmOptions) replacefilter(token: "@@vmoptions32@@", value: "$mem32") replacefilter(token: "@@vmoptions64@@", value: "$mem64 -XX:+UseCompressedOops") - replacefilter(token: "@@idea_properties@@", value: readIdeaProperties(args)) + replacefilter(token: "@@idea_properties@@", value: properties) } - if (args.executable != "idea") { - ant.move(file: "$path/Contents/MacOS/idea", tofile: "$path/Contents/MacOS/$args.executable") + if (executable != "idea") { + ant.move(file: "$path/Contents/MacOS/idea", tofile: "$path/Contents/MacOS/$executable") } + ant.replace(file: "$path/bin/inspect.sh") { + replacefilter(token: "@@product_full@@", value: fullName) + replacefilter(token: "@@script_name@@", value: executable) + } + if (args.inspect_script != null && args.inspect_script != "inspect") { + ant.move(file: "$path/bin/inspect.sh", tofile: "$path/bin/${args.inspect_script}.sh") + } +}) + +binding.setVariable("winScripts", { String target, String home, String name, Map args -> + String fullName = args.fullName != null ? args.fullName : p("component.names.fullname") + String product_uc = args.product_uc != null ? args.product_uc : p("component.names.product").toUpperCase() + String vm_options = args.vm_options != null ? args.vm_options : "${p("component.names.product").toLowerCase()}.exe" + + ant.copy(todir: "$target/bin") { + fileset(dir: "$home/bin/scripts/win") + + filterset(begintoken: "@@", endtoken: "@@") { + filter(token: "product_full", value: fullName) + filter(token: "product_uc", value: product_uc) + filter(token: "vm_options", value: vm_options) + filter(token: "isEap", value: isEap()) + filter(token: "system_selector", value: args.system_selector) + filter(token: "ide_jvm_args", value: ifNull(args.ide_jvm_args, "")) + filter(token: "tools_jar", value: ifNull(args.tools_jar, false)) + filter(token: "script_name", value: name) + } + } + + if (name != "idea.bat") { + ant.move(file: "$target/bin/idea.bat", tofile: "$target/bin/$name") + } + if (args.inspect_script != null && args.inspect_script != "inspect") { + ant.move(file: "$target/bin/inspect.bat", tofile: "$target/bin/${args.inspect_script}.bat") + } + + ant.fixcrlf(srcdir: "$target/bin", includes: "*.bat", eol: "dos") +}) + +private ifNull(v, defVal) { v != null ? v : defVal } + +binding.setVariable("unixScripts", { String target, String home, String name, Map args -> + String fullName = args.fullName != null ? args.fullName : p("component.names.fullname") + String product_uc = args.product_uc != null ? args.product_uc : p("component.names.product").toUpperCase() + String vm_options = args.vm_options != null ? args.vm_options : p("component.names.product").toLowerCase() + + ant.copy(todir: "$target/bin") { + fileset(dir: "$home/bin/scripts/unix") + + filterset(begintoken: "@@", endtoken: "@@") { + filter(token: "product_full", value: fullName) + filter(token: "product_uc", value: product_uc) + filter(token: "vm_options", value: vm_options) + filter(token: "isEap", value: isEap()) + filter(token: "system_selector", value: args.system_selector) + filter(token: "ide_jvm_args", value: ifNull(args.ide_jvm_args, "")) + filter(token: "tools_jar", value: ifNull(args.tools_jar, false)) + filter(token: "script_name", value: name) + } + } + + if (name != "idea.sh") { + ant.move(file: "$target/bin/idea.sh", tofile: "$target/bin/$name") + } + if (args.inspect_script != null && args.inspect_script != "inspect") { + ant.move(file: "$target/bin/inspect.sh", tofile: "$target/bin/${args.inspect_script}.sh") + } + + ant.fixcrlf(srcdir: "$target/bin", includes: "*.sh", eol: "unix") +}) + +binding.setVariable("winVMOptions", { String target, String system_selector, String name, String name64 = null -> + def options = system_selector != null ? vmOptions32yjp(system_selector) : vmOptions32() + ant.echo(file: "$target/bin/${name}.vmoptions", message: options.replace(' ', '\n')) + + if (name64 != null) { + options = system_selector != null ? vmOptions64yjp(system_selector) : vmOptions64() + ant.echo(file: "$target/bin/${name64}.vmoptions", message: options.replace(' ', '\n')) + } + + ant.fixcrlf(srcdir: "$target/bin", includes: "*.vmoptions", eol: "dos") +}) + +binding.setVariable("unixVMOptions", { String target, String name -> + ant.echo(file: "$target/bin/${name}.vmoptions", message: vmOptions32().replace(' ', '\n')) + ant.echo(file: "$target/bin/${name}64.vmoptions", message: vmOptions64().replace(' ', '\n')) + ant.fixcrlf(srcdir: "$target/bin", includes: "*.vmoptions", eol: "unix") +}) + +binding.setVariable("unixReadme", { String target, String home, Map args -> + String fullName = args.fullName != null ? args.fullName : p("component.names.fullname") + copyAndPatchFile("$home/build/Install-Linux-tar.txt", "$target/Install-Linux-tar.txt", + ["product_full": fullName, "product": p("component.names.product").toLowerCase(), + "system_selector": args.system_selector, "settings_dir": fullName.replace(" ", "")], "@@") + ant.fixcrlf(file: "$target/bin/Install-Linux-tar.txt", eol: "unix") }) binding.setVariable("forceDelete", { String dirPath -> @@ -218,34 +384,33 @@ binding.setVariable("forceDelete", { String dirPath -> } }) -binding.setVariable("patchPropertiesFile", { String where -> - ant.echo(file: "$where/bin/idea.properties", append: "true", message: - isEap() ? -""" +binding.setVariable("copyPropertiesFile", { String source, String target -> + ant.copy(file: source, tofile: "$target/bin/idea.properties", overwrite: "true") + patchPropertiesFile(target) +}) +binding.setVariable("patchPropertiesFile", { String target -> + String message = (isEap() ? """ #----------------------------------------------------------------------- -# Change to 'disabled' if you do not need to receive instant visual notifications about -# fatal errors that happen to an IDE or plugins installed. +# Change to 'disabled' if you don't want to receive instant visual notifications +# about fatal errors that happen to an IDE or plugins installed. #----------------------------------------------------------------------- idea.fatal.error.notification=enabled """ - - : - -""" - + : """ #----------------------------------------------------------------------- -# Change to 'enabled' if you need to receive instant visual notifications about -# fatal errors that happen to an IDE or plugins installed. +# Change to 'enabled' if you want to receive instant visual notifications +# about fatal errors that happen to an IDE or plugins installed. #----------------------------------------------------------------------- idea.fatal.error.notification=disabled -""" -) +""") + ant.echo(file: "$target/bin/idea.properties", append: "true", message: message) }) -binding.setVariable("zipSources", {String home, String targetDir -> - def sources = "$targetDir/sources.zip" +binding.setVariable("zipSources", { String home, String targetDir -> + String sources = "$targetDir/sources.zip" project.stage("zip sources to $sources") + ant.mkdir(dir: targetDir) ant.delete(file: sources) ant.zip(destfile: sources) { @@ -256,6 +421,8 @@ binding.setVariable("zipSources", {String home, String targetDir -> exclude(name: "**/testData/**") } } + + notifyArtifactBuilt(sources) }) /** @@ -287,8 +454,6 @@ private String readIdeaProperties(Map args) { ideaProperties.load(ideaPropertiesFile); ideaPropertiesFile.close(); - //Map properties = - def userCustomProperties = args.get("idea.properties") def defaultProperties = ["CVS_PASSFILE": "~/.cvspass", "com.apple.mrj.application.live-resize": "false", "idea.paths.selector": args.system_selector, @@ -296,13 +461,17 @@ private String readIdeaProperties(Map args) { "idea.smooth.progress": "false", "apple.laf.useScreenMenuBar": "true", "apple.awt.graphics.UseQuartz": "true", - "apple.awt.fullscreencapturealldisplays": "false", - ] - if (args.get("platform_prefix", null) != null) { + "apple.awt.fullscreencapturealldisplays": "false"] + if (args.platform_prefix != null) { defaultProperties.put("idea.platform.prefix", args.platform_prefix) } - Map properties = defaultProperties + (userCustomProperties != null ? userCustomProperties : [:]); + Map properties = defaultProperties + def customProperties = args.get("idea.properties") + if (customProperties != null) { + properties += customProperties + } + properties.each {k, v -> if (v == null) { // if overridden with null - ignore property @@ -327,3 +496,73 @@ private String readIdeaProperties(Map args) { } return buff.toString() } + +binding.setVariable("buildWinZip", { String zipPath, List paths -> + project.stage(".win.zip") + + ant.zip(zipfile: zipPath) { + paths.each { + fileset(dir: it) + } + } + + notifyArtifactBuilt(zipPath) +}) + +binding.setVariable("buildMacZip", { String zipRoot, String zipPath, List paths, List extraBins = [] -> + project.stage(".mac.zip") + + ant.zip(zipfile: zipPath) { + paths.each { + zipfileset(dir: it, prefix: zipRoot) { + exclude(name: "bin/*.sh") + exclude(name: "bin/fsnotifier") + exclude(name: "bin/relaunch") + exclude(name: "bin/idea.properties") + exclude(name: "Contents/MacOS/*") + extraBins.each { + exclude(name: it) + } + } + } + + paths.each { + zipfileset(dir: it, filemode: "755", prefix: zipRoot) { + include(name: "bin/*.sh") + include(name: "bin/fsnotifier") + include(name: "bin/relaunch") + include(name: "Contents/MacOS/*") + extraBins.each { + include(name: it) + } + } + } + } + + notifyArtifactBuilt(zipPath) +}) + +binding.setVariable("buildTarGz", { String tarRoot, String tarPath, List paths -> + project.stage(".tar.gz") + + ant.tar(tarfile: tarPath) { + paths.each { + tarfileset(dir: it, prefix: tarRoot) { + exclude(name: "bin/*.sh") + exclude(name: "bin/fsnotifier*") + } + } + + paths.each { + tarfileset(dir: it, filemode: "755", prefix: tarRoot) { + include(name: "bin/*.sh") + include(name: "bin/fsnotifier*") + } + } + } + + String gzPath = "${tarPath}.gz" + ant.gzip(src: tarPath, zipfile: gzPath) + ant.delete(file: tarPath) + notifyArtifactBuilt(gzPath) +}) diff --git a/license/yourkit-license-redist.txt b/license/yourkit-license-redist.txt index 77a88b27ff41..bf1e44d8b91d 100644 --- a/license/yourkit-license-redist.txt +++ b/license/yourkit-license-redist.txt @@ -1,7 +1,9 @@ The following files can be redistributable under the license below: yjpagent.dll -libyjpagent.so +yjpagent64.dll +libyjpagent-linux.so +libyjpagent-linux64.so libyjpagent.jnilib yjp-controller-api-redist.jar