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