Skip to content

Commit

Permalink
Add ceylon bootstrap
Browse files Browse the repository at this point in the history
  • Loading branch information
lucaswerkmeister committed Mar 24, 2017
1 parent c0c3bb6 commit ccfa026
Show file tree
Hide file tree
Showing 4 changed files with 216 additions and 0 deletions.
Binary file added .ceylon/bootstrap/ceylon-bootstrap.jar
Binary file not shown.
3 changes: 3 additions & 0 deletions .ceylon/bootstrap/ceylon-bootstrap.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#Generated by 'ceylon bootstrap'
#Fri Mar 24 18:35:23 CET 2017
distribution=https\://ceylon-lang.org/download/dist/1_3_2-SNAPSHOT
81 changes: 81 additions & 0 deletions ceylonb
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
#!/bin/sh

# resolve links - $0 may be a softlink
PRG="$0"
while [ -h "$PRG" ]; do
ls="$(ls -ld "$PRG")"
link="${ls##*-> }" # remove largest prefix: yields link target (behind ->)
if [ "$link" != "${link#/}" ]; then # remove prefix / if present
# path was absolute
PRG="$link"
else
# was not
PRG="$(dirname "$PRG")/$link"
fi
done

DIR="$(dirname "$PRG")"

# Check if we should use a distribution bootstrap
if [ -f "$DIR/.ceylon/bootstrap/ceylon-bootstrap.properties" ] && [ -f "$DIR/.ceylon/bootstrap/ceylon-bootstrap.jar" ]; then
# Using bootstrap
LIB="$DIR/.ceylon/bootstrap"
else
# Normal execution
CEYLON_HOME="$DIR/.."
LIB="$CEYLON_HOME/lib"

if [ "$1" = "--show-home" ]; then
echo "$CEYLON_HOME"
exit
fi
fi

if [ -z "$JAVA_HOME" ]; then
JAVA="java"
else
JAVA="$JAVA_HOME/bin/java"
fi

# Make sure we have java installed
if ! hash java 2>&-
then
echo >&2 "Java not found, you must install Java in order to compile and run Ceylon programs"
echo >&2 "Go to http://www.java.com/getjava/ to download the latest version of Java"
exit 1
fi

#JAVA_DEBUG_OPTS="-Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y"

if [ "$PRESERVE_JAVA_OPTS" != "true" ]; then
PREPEND_JAVA_OPTS="$JAVA_DEBUG_OPTS"
if [ -n "$COLUMNS" ]; then
CEYL_COLS="$COLUMNS"
elif stty size 2>/dev/null >/dev/null; then
CEYL_COLS="$(stty size 2>/dev/null | cut -d' ' -f2)"
else
CEYL_COLS="$(tput 2>/dev/null cols)"
fi
PREPEND_JAVA_OPTS="$PREPEND_JAVA_OPTS -Dcom.redhat.ceylon.common.tool.terminal.width=$CEYL_COLS"
PREPEND_JAVA_OPTS="$PREPEND_JAVA_OPTS -Dcom.redhat.ceylon.common.tool.progname=$(basename "$PRG")"
fi
for arg; do
case $arg in
--java=*) JAVA_OPTS="$JAVA_OPTS ${arg#--java=}";;
[!-]*) break;;
esac
done
JAVA_OPTS="$PREPEND_JAVA_OPTS $JAVA_OPTS"

BOOTSTRAP="$LIB/ceylon-bootstrap.jar"

# Check for cygwin, convert bootstrap path to Windows format
case "`uname`" in
CYGWIN*) [ -n "$LIB" ] && BOOTSTRAP=`cygpath -w "$BOOTSTRAP"`
esac

exec "$JAVA" \
$JAVA_OPTS \
-jar "$BOOTSTRAP" \
"$@"

132 changes: 132 additions & 0 deletions ceylonb.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
@echo off
setlocal ENABLEDELAYEDEXPANSION

:: Check if we should use a distribution bootstrap
pushd "%~dp0"
set "DIR=%CD%"
popd
if NOT exist "%DIR%\.ceylon\bootstrap\ceylon-bootstrap.properties" (
goto :normal
)
if NOT exist "%DIR%\.ceylon\bootstrap\ceylon-bootstrap.jar" (
goto :normal
)

:: Using bootstrap
set "LIB=%DIR%\.ceylon\bootstrap"

goto :endbs

:normal

:: Normal execution

:: Find CEYLON_HOME
pushd "%~dp0.."
set "CEYLON_HOME=%CD%"
popd
set "LIB=%CEYLON_HOME%\lib"

if "%~1" == "--show-home" (
@echo %CEYLON_HOME%
exit /b 1
)

:endbs

:: Find Java

:: Only check the registry if JAVA_HOME is not already set
IF NOT "%JAVA_HOME%" == "" (
goto :javaend
)

:: Find Java in the registry
set "KEY_NAME=HKLM\SOFTWARE\JavaSoft\Java Runtime Environment"
set "KEY_NAME2=HKLM\SOFTWARE\Wow6432Node\JavaSoft\Java Runtime Environment"

:: get the current version
FOR /F "usebackq skip=2 tokens=3" %%A IN (`REG QUERY "%KEY_NAME%" /v CurrentVersion 2^>nul`) DO (
set "ValueValue=%%A"
)

if "%ValueValue%" NEQ "" (
set "JAVA_CURRENT=%KEY_NAME%\%ValueValue%"
) else (
rem Try again for 64bit systems

FOR /F "usebackq skip=2 tokens=3" %%A IN (`REG QUERY "%KEY_NAME2%" /v CurrentVersion 2^>nul`) DO (
set "JAVA_CURRENT=%KEY_NAME2%\%%A"
)
)

if "%ValueValue%" NEQ "" (
set "JAVA_CURRENT=%KEY_NAME%\%ValueValue%"
) else (
rem Try again for 64bit systems from a 32-bit process

FOR /F "usebackq skip=2 tokens=3" %%A IN (`REG QUERY "%KEY_NAME%" /v CurrentVersion /reg:64 2^>nul`) DO (
set "JAVA_CURRENT=%KEY_NAME%\%%A"
)
)

if "%JAVA_CURRENT%" == "" (
@echo Java not found, you must install Java in order to compile and run Ceylon programs
@echo Go to http://www.java.com/getjava/ to download the latest version of Java
exit /b 1
)

:: get the javahome
FOR /F "usebackq skip=2 tokens=3*" %%A IN (`REG QUERY "%JAVA_CURRENT%" /v JavaHome 2^>nul`) DO (
set "JAVA_HOME=%%A %%B"
)

if "%JAVA_HOME%" EQU "" (
rem Try again for 64bit systems from a 32-bit process
FOR /F "usebackq skip=2 tokens=3*" %%A IN (`REG QUERY "%JAVA_CURRENT%" /v JavaHome /reg:64 2^>nul`) DO (
set "JAVA_HOME=%%A %%B"
)
)

:javaend

set "JAVA=%JAVA_HOME%\bin\java.exe"

:: Check that Java executable actually exists
if not exist "%JAVA%" (
@echo "Cannot find java.exe at %JAVA%, check that your JAVA_HOME variable is pointing to the right place"
exit /b 1
)

rem set JAVA_DEBUG_OPTS="-Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y"

if NOT "%PRESERVE_JAVA_OPTS%" == "true" (
set PREPEND_JAVA_OPTS=%JAVA_DEBUG_OPTS%
rem Other java opts go here
)

rem Find any --java options and add their values to JAVA_OPTS
for %%x in (%*) do (
set ARG=%%~x
if "!ARG:~0,7!" EQU "--java=" (
set OPT=!ARG:~7!
set "JAVA_OPTS=!JAVA_OPTS! !OPT!"
) else if "!ARG!" EQU "--java" (
@echo Error: use --java options with an equal sign and quotes, eg: "--java=-Xmx500m"
exit /b 1
) else if "!ARG:~0,1!" NEQ "-" (
goto :breakloop
)
)
:breakloop

set "JAVA_OPTS=%PREPEND_JAVA_OPTS% %JAVA_OPTS%"

"%JAVA%" ^
%JAVA_OPTS% ^
-jar "%LIB%\ceylon-bootstrap.jar" ^
%*

endlocal

if %errorlevel% neq 0 exit /B %errorlevel%

0 comments on commit ccfa026

Please sign in to comment.