From a9f9d88614b835d48f6f314d8e3e1b3fbf522ddd Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Wed, 11 Jan 2012 15:33:21 +0100 Subject: [PATCH] Unified build scripts --- bin/mac/info_plist_parser.scpt | 45 ----- bin/mac/inspect.sh | 11 + bin/nix/idea.sh | 162 --------------- bin/nix/inspect.sh | 7 - bin/nix/inspect_diff.sh | 64 ------ bin/scripts/unix/idea.sh | 155 ++++++++++++++ bin/scripts/unix/inspect.sh | 11 + bin/scripts/win/append.bat | 14 ++ bin/{ => scripts}/win/idea.bat | 51 +++-- bin/scripts/win/inspect.bat | 10 + bin/win/append.bat | 14 -- bin/win/inspect.bat | 2 - bin/win/inspect_diff.bat | 75 ------- build/Install-Linux-tar.txt | 22 +- build/images/idea_CE128.png | Bin 16074 -> 0 bytes build/images/idea_CE16.png | Bin 855 -> 0 bytes build/images/idea_CE32.png | Bin 2323 -> 0 bytes build/images/idea_CE48.png | Bin 3924 -> 0 bytes build/scripts/dist.gant | 217 +++++++------------- build/scripts/utils.gant | 315 +++++++++++++++++++++++++---- license/yourkit-license-redist.txt | 4 +- 21 files changed, 590 insertions(+), 589 deletions(-) delete mode 100644 bin/mac/info_plist_parser.scpt create mode 100644 bin/mac/inspect.sh delete mode 100755 bin/nix/idea.sh delete mode 100644 bin/nix/inspect.sh delete mode 100644 bin/nix/inspect_diff.sh create mode 100755 bin/scripts/unix/idea.sh create mode 100644 bin/scripts/unix/inspect.sh create mode 100644 bin/scripts/win/append.bat rename bin/{ => scripts}/win/idea.bat (51%) create mode 100644 bin/scripts/win/inspect.bat delete mode 100644 bin/win/append.bat delete mode 100644 bin/win/inspect.bat delete mode 100644 bin/win/inspect_diff.bat delete mode 100644 build/images/idea_CE128.png delete mode 100644 build/images/idea_CE16.png delete mode 100644 build/images/idea_CE32.png delete mode 100644 build/images/idea_CE48.png 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 5b04015a55888c13d890d4c53cb91d4021d11011..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16074 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 QBLDyZ07*qoM6N<$f@@<*F8}}l diff --git a/build/images/idea_CE16.png b/build/images/idea_CE16.png deleted file mode 100644 index c0e931fc86c927679af772ca9d6c88018b5e7b37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 855 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 - +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