Since some of the tools used during the build (like ant, java, etc.) do not understand the cygwin style paths like /cygdrive/c/, you need to use the so called 'mixed style' of drive letters and / characters, e.g. C:/ You can use the command 'cygpath -m -s -a' on a path to get the right style, e.g.
   export ALT_BOOTDIR=`cygpath -m -s -a "${ALT_BOOTDIR}"`

The -m gets you mixed style, the -s gets you a short path without spaces, and the -a gets you an absolute path.
But the path needs to exist for cygpath to work.

-kto

On Aug 2, 2010, at 5:10 AM, John Francis wrote:

I am trying to build openjdk7 b100 under Windows Server 2008 SP2.
I am using cygwin 1.7+
I am having trouble with openjdk/langtools/make
The Makefile there sets up some java support for Ant using the ALT_BOOTDIR, which therefore must be a valid cygwin path, such as / cygdrive/c/DEVELO~1/JDK/bootJDK/JDK16~1.0_1 However if set to a cygwin style path, the ant build.xml in openjdk/ langtools/make fails because it uses the available task to test the correctness of the boot.java.home property ( set from the same Makefile which had to have the cygwin path ). As you doubtless know ( http://ant.apache.org/manual/platform.html ) when ant is executed by cygwin it still expects Windows path names. I could doubtless hack the build.properties or Makefile to set the boot.java.home to a windows path, but I am concerned that I am doing something else wrong which I will have to fix again and again. What format should ALT_BOOTDIR have when running cygwin? Windows or cygwin? Is there some property file I can edit to satisfy all the build?


Here is the output of an edited build.xml when I set ALT_BOOTDIR to a cygwin path ( see below for the redefined macro, check...

<target name="-def-check">
<macrodef name="check">
<attribute name="name"/>
<attribute name="property"/>
<attribute name="marker" default=""/>
<sequential>
<echo message="-def-check @@{name} is '@{name}'" />
<echo message="-def-check @@{property} is '@{property}'" />
<echo message="-def-check @@{marker} is '@{marker}'" />
<echo message="-def-check $${@@{property}} is '$...@{property}}'" />
<echo message="-def-check $${@@{property}}/@@{marker} is '$ {...@{property}}/@{marker}'" /> <available property="foo" file="$...@{property}}/@{marker}" value="available" />
<echo message="-def-check $${@@{property}}/@@{marker} is ${foo}" />
<available property="foo2" file="C:\development\JDK\bootJDK \jdk1.6.0_18/bin/java.exe" value="available" />
<echo message="-def-check a proper windows path is ${foo2}" />
….

outputs;

-check-boot.java.home:
[echo] -def-check @{name} is 'bootstrap java'
[echo] -def-check @{property} is 'boot.java.home'
[echo] -def-check @{marker} is 'bin/java.exe'
[echo] -def-check $...@{property}} is '/cygdrive/c/DEVELO~1/JDK/ bootJDK/JDK16~1.0_1' [echo] -def-check $...@{property}}/@{marker} is '/cygdrive/c/DEVELO~1/ JDK/bootJDK/JDK16~1.0_1/bin/java.exe'
[echo] -def-check $...@{property}}/@{marker} is ${foo}
[echo] -def-check a proper windows path is available


here is my cygwin.bat

@echo off

@echo Remember old LIB INCLUDE and PATH, in case needed and set to WIN_ORIG_XXX.
set WIN_ORIG_INCLUDE=%INCLUDE%
set WIN_ORIG_LIB=%LIB%
set WIN_ORIG_PATH=%PATH%

@echo Clear LIB, PATH, INCLUDE ** and ** CLASSPATH
set INCLUDE=
set LIB=
set PATH=
set CLASSPATH=

rem setup INCLUDE, LIB, PATH for M$ VC
call "C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x86

@echo Set up special VC_PATH variable to be picked up in .bashrc and placed on the path before cygwin.
set VC_PATH=%PATH%

@echo Clear Path to nothing ... just take what cygwin provides, do not edit /etc/profile which is edited only by cygwin.
set PATH=

rem setup ALT_XXX vars for OpenJDK
set ALT_BOOTDIR=C:\development\JDK\bootJDK\jdk1.6.0_18
set ALT_BINARY_PLUGS_PATH=C:\development\JDK\openjdk7-b100\openjdk- binary-plugs
set ANT_HOME=C:\development\apache-ant-1.8.1
rem allow openjdk to find this for itself
rem set ALT_MSVCRT_DLL_PATH=C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT\msvcr90.dll

set ALT_FREETYPE_HEADERS_PATH=C:/development/GnuWin32/include
set ALT_FREETYPE_LIB_PATH=C:/development/GnuWin32/lib

rem This is one of my own
set ALT_MT_PATH=C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin


rem DSDK should already be on the path


@echo on

set CYGWIN=upcaseenv

@echo off

C:
chdir C:\cygwin\bin

bash --login -i




here is my .bashrc;


# User dependent .bashrc file

# Environment Variables
# #####################

# TMP and TEMP are defined in the Windows environment. Leaving
# them set to the default Windows temporary directory can have
# unexpected consequences.
unset TMP
unset TEMP

# ADDITIONS - JF
# ##############


# set up OpenJDK vars

ALT_BOOTDIR=`cygpath -d $ALT_BOOTDIR`
#ALT_BOOTDIR=`cygpath -p --unix "$ALT_BOOTDIR"`
echo $ALT_BOOTDIR
export ALT_BOOTDIR

ALT_BINARY_PLUGS_PATH=`cygpath -d "$ALT_BINARY_PLUGS_PATH"`
ALT_BINARY_PLUGS_PATH=`cygpath -p --unix "$ALT_BINARY_PLUGS_PATH"`
export ALT_BINARY_PLUGS_PATH


#ALT_MSVCRT_DLL_PATH=`cygpath -d "$ALT_MSVCRT_DLL_PATH"`
#ALT_MSVCRT_DLL_PATH=`cygpath -p --unix "$ALT_MSVCRT_DLL_PATH"`
#export ALT_MSVCRT_DLL_PATH

ANT_HOME=`cygpath -d "$ANT_HOME"`
ANT_HOME=`cygpath -p --unix "$ANT_HOME"`
export ANT_HOME

ALT_MT_PATH=`cygpath -d "$ALT_MT_PATH"`
ALT_MT_PATH=`cygpath -p --unix "$ALT_MT_PATH"`
export ALT_MT_PATH

# Put the VC Linker before cygwin
UNIX_VC_PATH=`cygpath -p --unix "$VC_PATH"`
export UNIX_VC_PATH
PATH=$UNIX_VC_PATH:$PATH
export PATH

# Ensure ant is on the path - note this will fail unless JAVA_HOME is set??? which we can't
# PATH=$PATH:$ANT_HOME/bin
# export PATH

cd /cygdrive/c/development/JDK/openjdk7-b100/openjdk

Reply via email to