[PATCH] Support for building using WSL (Windows Subsystem for Linux) on Windows (original) (raw)

Andrew Luo andrewluotechnologies at outlook.com
Thu Dec 13 07:48:26 UTC 2018


Hi,

I attached the latest patch, which now can use Windows paths. The new instructions to build are (assuming 8.3 paths are enabled on your system...):

  1. wsl must be started from a Windows Developer command prompt. To ensure the correct environment variables are propagated from Windows to WSL, you can run the following commands: set WSLENV=INCLUDE/l:LIBPATH/l
  2. Start wsl (bash): wsl
  3. Run configure: ./configure --with-boot-jdk=/mnt/c/Users/Andrew/Downloads/openjdk-11.0.1_windows-x64_bin/jdk-11.0.1 --with-tools-dir="C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary" --with-ucrt-dll-dir="C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs\x64"
  4. Run make I’ve tested make with the default target as well as “make images”

The issues regarding the console input redirection I'm still investigating, but I doubt it's a bug in the build scripts, meaning it is likely a bug in the (boot) JDK or WSL. Even if we fix the JDK, we probably still have to support older boot JDKs (even if the patch is backported), and waiting for Microsoft to fix a bug in WSL could take a while (and might only be fixed in a later version of Windows). Thus, I think what we have is a good start, unless you think it's necessary to root cause the redirection issue first. That said, I will keep this thread updated with my progress once I figure out the root cause of the issue.

Thanks,

-Andrew

-----Original Message----- From: Magnus Ihse Bursie <magnus.ihse.bursie at oracle.com> Sent: Wednesday, December 12, 2018 10:54 AM To: Erik Joelsson <erik.joelsson at oracle.com>; Andrew Luo <andrewluotechnologies at outlook.com>; build-dev at openjdk.java.net Subject: Re: [PATCH] Support for building using WSL (Windows Subsystem for Linux) on Windows

On 2018-12-12 18:30, Erik Joelsson wrote:

Hello,

I had the same trouble you describe trying to call cmd to create a short path from WSL with an inline script. I managed to it working by creating a script file like this: shortName.cmd: --- @ECHO OFF if '%1' NEQ '' echo %~s1 --- $ /mnt/c/Windows/System32/cmd.exe /c shortName.cmd "C:\Program Files" C:\PROGRA~1 We could put such a script in make/scripts. That's a clever workaround. Andrew, can you see if you can use that technique to get the proper space safe path resolution to work? I think you can copy the msys code straight as it is, and just replace the call to cmd echo %~sA with cmd /c $TOPDIR/make/script/shortName.cmd, or whatever you end up calling it. /Erik On 2018-12-11 22:44, Andrew Luo wrote: For the stdin/stdout redirection: basically, the issue was only occurring with those two executables. Oddly enough, it would occur every time I tried (for SPP the output would be cutoff, presumably because the input was cutoff, and for the other executable, available0 would throw an exception consistently for System.in). I have a hunch this is due to using WINAPI console functions for reading from a WSL shell, but I'm not 100% certain. I plan to try to build a smaller sample that can reproduce the issue, and if it seems to be a Windows bug I will file a bug with Microsoft. So what you are saying is that the issue was not intermittent, but always happened for those tools? If so, I can reluctantly agree to this fix. But I'd appreciate if you could drill down a bit and see what the problem really is.

   i f   t e s t   " x $ S D K _ I N S T A L L _ D I R "   ! =   x ;   t h e n 

       i f   t e s t   " x $ P r o g r a m W 6 4 3 2 "   ! =   x ;   t h e n 

           T O O L C H A I N _ C H E C K _ P O S S I B L E _ W I N _ S D K _ R O O T ( [ $ { V S _ V E R S I O N } ] , 

@ @ - 3 7 2 , 8 + 3 7 1 , 1 3 @ @ # I n s t e a d c r e a t e a s h e l l s c r i p t w h i c h w i l l s e t t h e r e l e v a n t v a r i a b l e s w h e n r u n . W I N P A T H _ V S _ E N V _ C M D = " $ V S _ E N V _ C M D " B A S I C _ W I N D O W S _ R E W R I T E _ A S _ W I N D O W S _ M I X E D _ P A T H ( [ W I N P A T H _ V S _ E N V _ C M D ] ) - W I N P A T H _ B A S H = " $ B A S H " - B A S I C _ W I N D O W S _ R E W R I T E _ A S _ W I N D O W S _ M I X E D _ P A T H ( [ W I N P A T H _ B A S H ] ) +
+ i f t e s t " x $ O P E N J D K _ B U I L D _ O S _ E N V " = " x w i n d o w s . w s l " ; t h e n + W I N P A T H _ B A S H = " b a s h " + e l s e + W I N P A T H _ B A S H = " $ B A S H " + B A S I C _ W I N D O W S _ R E W R I T E _ A S _ W I N D O W S _ M I X E D _ P A T H ( [ W I N P A T H _ B A S H ] ) + f i
# G e n e r a t e a D O S b a t c h f i l e w h i c h r u n s $ V S _ E N V _ C M D , a n d t h e n c r e a t e s a s h e l l # s c r i p t ( e x e c u t a b l e b y b a s h ) t h a t w i l l s e t u p t h e i m p o r t a n t v a r i a b l e s . @ @ - 3 8 1 , 7 + 3 8 5 , 7 @ @ $ E C H O " @ e c h o o f f " > $ E X T R A C T _ V C _ E N V _ B A T _ F I L E # T h i s w i l l e n d u p s o m e t h i n g l i k e : # c a l l C : / p r o g r a ~ 2 / m i c r o s ~ 2 . 0 / v c / b i n / a m d 6 4 / v c v a r s 6 4 . b a t - $ E C H O " c a l l $ W I N P A T H _ V S _ E N V _ C M D $ V S _ E N V _ A R G S " > > $ E X T R A C T _ V C _ E N V _ B A T _ F I L E + $ E C H O " c a l l \ " $ W I N P A T H _ V S _ E N V _ C M D \ " $ V S _ E N V _ A R G S " > > $ E X T R A C T _ V C _ E N V _ B A T _ F I L E # I n s o m e c a s e s , t h e V S _ E N V _ C M D w i l l c h a n g e d i r e c t o r y , c h a n g e b a c k s o # t h e s e t - v s - e n v . s h e n d s u p i n t h e r i g h t p l a c e . $ E C H O ' c d % ~ d p 0 ' > > $ E X T R A C T _ V C _ E N V _ B A T _ F I L E @ @ - 3 8 9 , 2 8 + 3 9 3 , 2 8 @ @ # C : / C y g W i n / b i n / b a s h - c ' e c h o V S _ P A T H = \ " $ P A T H \ " > l o c a l d e v e n v . s h # T h e t r a i l i n g s p a c e f o r e v e r y o n e e x c e p t P A T H i s n o t y p o , b u t i s n e e d e d d u e # t o t r a i l i n g \ i n t h e W i n d o w s p a t h s . T h e s e w i l l b e s t r i p p e d l a t e r . - $ E C H O " $ W I N P A T H _ B A S H - c ' e c h o V S _ P A T H = " ' \ " $ P A T H \ " > s e t - v s - e n v . s h ' \ + $ E C H O " $ W I N P A T H _ B A S H " ' - c " e c h o V S _ P A T H = \ \ \ " \ " $ P A T H \ " \ \ \ " > s e t - v s - e n v . s h " ' \ > > $ E X T R A C T _ V C _ E N V _ B A T _ F I L E - $ E C H O " $ W I N P A T H _ B A S H - c ' e c h o V S _ I N C L U D E = " ' \ " $ I N C L U D E \ ; $ i n c l u d e \ " > > s e t - v s - e n v . s h ' \ + $ E C H O " $ W I N P A T H _ B A S H " ' - c " e c h o V S _ I N C L U D E = \ \ \ " \ " $ I N C L U D E \ ; $ i n c l u d e \ " \ \ \ " > > s e t - v s - e n v . s h " ' \ > > $ E X T R A C T _ V C _ E N V _ B A T _ F I L E - $ E C H O " $ W I N P A T H _ B A S H - c ' e c h o V S _ L I B = " ' \ " $ L I B \ ; $ l i b \ " > > s e t - v s - e n v . s h ' \ + $ E C H O " $ W I N P A T H _ B A S H " ' - c " e c h o V S _ L I B = \ \ \ " \ " $ L I B \ ; $ l i b \ " \ \ \ " > > s e t - v s - e n v . s h " ' \ > > $ E X T R A C T _ V C _ E N V _ B A T _ F I L E - $ E C H O " $ W I N P A T H _ B A S H - c ' e c h o V C I N S T A L L D I R = " ' \ " $ V C I N S T A L L D I R \ " > > s e t - v s - e n v . s h ' \ + $ E C H O " $ W I N P A T H _ B A S H " ' - c " e c h o V C I N S T A L L D I R = \ \ \ " \ " $ V C I N S T A L L D I R \ " \ \ \ " > > s e t - v s - e n v . s h " ' \ > > $ E X T R A C T _ V C _ E N V _ B A T _ F I L E - $ E C H O " $ W I N P A T H _ B A S H - c ' e c h o W i n d o w s S d k D i r = " ' \ " $ W i n d o w s S d k D i r \ " > > s e t - v s - e n v . s h ' \ + $ E C H O " $ W I N P A T H _ B A S H " ' - c " e c h o W i n d o w s S d k D i r = \ \ \ " \ " $ W i n d o w s S d k D i r \ " \ \ \ " > > s e t - v s - e n v . s h " ' \ > > $ E X T R A C T _ V C _ E N V _ B A T _ F I L E - $ E C H O " $ W I N P A T H _ B A S H - c ' e c h o W I N D O W S S D K D I R = " ' \ " $ W I N D O W S S D K D I R \ " > > s e t - v s - e n v . s h ' \ + $ E C H O " $ W I N P A T H _ B A S H " ' - c " e c h o W I N D O W S S D K D I R = \ \ \ " \ " $ W I N D O W S S D K D I R \ " \ \ \ " > > s e t - v s - e n v . s h " ' \ > > $ E X T R A C T _ V C _ E N V _ B A T _ F I L E
# N o w e x e c u t e t h e n e w l y c r e a t e d b a t f i l e . # T h e | c a t i s t o s t o p S e t E n v . C m d t o m e s s w i t h s y s t e m c o l o r s o n m s y s . # C h a n g e d i r e c t o r y s o w e d o n ' t n e e d t o m e s s w i t h W i n d o w s p a t h s i n r e d i r e c t s . c d $ V S _ E N V _ T M P _ D I R - c m d / c e x t r a c t - v s - e n v . b a t | $ C A T + c m d $ E X E C U T A B L E _ S U F F I X / c e x t r a c t - v s - e n v . b a t | $ C A T c d $ C U R D I R
i f t e s t ! - s $ V S _ E N V _ T M P _ D I R / s e t - v s - e n v . s h ; t h e n - A C _ M S G _ N O T I C E ( [ C o u l d n o t s u c c e s f u l l y e x t r a c t t h e e n v i o n m e n t v a r i a b l e s n e e d e d f o r t h e V S s e t u p . ] ) + A C _ M S G _ N O T I C E ( [ C o u l d n o t s u c c e s f u l l y e x t r a c t t h e e n v i r o n m e n t v a r i a b l e s n e e d e d f o r t h e V S s e t u p . ] ) A C _ M S G _ N O T I C E ( [ T r y s e t t i n g - - w i t h - t o o l s - d i r t o t h e V C / b i n d i r e c t o r y w i t h i n t h e V S i n s t a l l a t i o n ] ) A C _ M S G _ N O T I C E ( [ o r r u n " b a s h . e x e - l " f r o m a V S c o m m a n d p r o m p t a n d t h e n r u n c o n f i g u r e f r o m t h e r e . ] ) A C _ M S G _ E R R O R ( [ C a n n o t c o n t i n u e ] ) @ @ - 6 0 0 , 1 0 + 6 0 4 , 1 0 @ @ B A S I C _ W I N D O W S _ R E W R I T E _ A S _ U N I X _ P A T H ( C Y G W I N _ V S _ T O O L S _ D I R ) i f t e s t " x $ O P E N J D K _ T A R G E T _ C P U _ B I T S " = x 6 4 ; t h e n P O S S I B L E _ M S V C _ D L L = $ F I N D " $ C Y G W I N _ V S _ T O O L S _ D I R " - n a m e $ D L L _ N A M E \ - | $ G R E P - i / x 6 4 / | $ H E A D - - l i n e s 1 + | $ G R E P - i / x 6 4 / | $ H E A D - - l i n e s 1 e l s e P O S S I B L E _ M S V C _ D L L = $ F I N D " $ C Y G W I N _ V S _ T O O L S _ D I R " - n a m e $ D L L _ N A M E \ - | $ G R E P - i / x 8 6 / | $ H E A D - - l i n e s 1 + | $ G R E P - i / x 8 6 / | $ H E A D - - l i n e s 1 f i T O O L C H A I N _ C H E C K _ P O S S I B L E _ M S V C _ D L L ( [ $ D L L _ N A M E ] , [ $ P O S S I B L E _ M S V C _ D L L ] , [ s e a r c h o f V S 1 0 0 C O M N T O O L S ] ) @ @ - 6 1 6 , 1 4 + 6 2 0 , 1 4 @ @ i f t e s t " x $ C Y G W I N _ V C _ I N S T A L L _ D I R " ! = x ; t h e n i f t e s t " x $ O P E N J D K _ T A R G E T _ C P U _ B I T S " = x 6 4 ; t h e n P O S S I B L E _ M S V C _ D L L = $ F I N D " $ C Y G W I N _ V C _ I N S T A L L _ D I R " - n a m e $ D L L _ N A M E \ - | $ G R E P x 6 4 | $ H E A D - - l i n e s 1 + | $ G R E P x 6 4 | $ H E A D - - l i n e s 1 e l s e P O S S I B L E _ M S V C _ D L L = $ F I N D " $ C Y G W I N _ V C _ I N S T A L L _ D I R " - n a m e $ D L L _ N A M E \ - | $ G R E P x 8 6 | $ G R E P - v i a 6 4 | $ G R E P - v x 6 4 | $ H E A D - - l i n e s 1 + | $ G R E P x 8 6 | $ G R E P - v i a 6 4 | $ G R E P - v x 6 4 | $ H E A D - - l i n e s 1 i f t e s t " x $ P O S S I B L E _ M S V C _ D L L " = x ; t h e n # W e ' r e g r a s p i n g a t s t r a w s n o w . . . P O S S I B L E _ M S V C _ D L L = $ F I N D " $ C Y G W I N _ V C _ I N S T A L L _ D I R " - n a m e $ D L L _ N A M E \ - | $ H E A D - - l i n e s 1 + | $ H E A D - - l i n e s 1 ` f i f i
@ @ - 6 9 3 , 1 3 + 6 9 7 , 1 3 @ @ i f t e s t " x $ U S E _ U C R T " = " x t r u e " ; t h e n A C _ M S G _ C H E C K I N G ( [ f o r U C R T D L L d i r ] ) i f t e s t " x $ w i t h _ u c r t _ d l l _ d i r " ! = x ; t h e n - i f t e s t - z " $ ( l s - d " $ w i t h _ u c r t _ d l l _ d i r / * . d l l " 2 > / d e v / n u l l ) " ; t h e n + U C R T _ D L L _ D I R = " $ w i t h _ u c r t _ d l l _ d i r " + B A S I C _ F I X U P _ P A T H ( [ U C R T _ D L L _ D I R ] ) + i f t e s t - z " $ ( l s - d $ U C R T _ D L L _ D I R / * . d l l 2 > / d e v / n u l l ) " ; t h e n A C _ M S G _ R E S U L T ( [ n o ] ) - A C _ M S G _ E R R O R ( [ C o u l d n o t f i n d a n y d l l s i n $ w i t h _ u c r t _ d l l _ d i r ] ) + A C _ M S G _ E R R O R ( [ C o u l d n o t f i n d a n y d l l s i n $ U C R T _ D L L _ D I R ] ) e l s e A C _ M S G _ R E S U L T ( [ $ w i t h _ u c r t _ d l l _ d i r ] ) - U C R T _ D L L _ D I R = " $ w i t h _ u c r t _ d l l _ d i r " - B A S I C _ F I X U P _ P A T H ( [ U C R T _ D L L _ D I R ] ) f i e l i f t e s t " x $ D E V K I T _ U C R T _ D L L _ D I R " ! = " x " ; t h e n U C R T _ D L L _ D I R = " $ D E V K I T _ U C R T _ D L L _ D I R " d i f f - r 4 b e f 1 9 5 7 a 1 d 8 m a k e / g e n d a t a / G e n d a t a - j a v a . b a s e . g m k - - - a / m a k e / g e n d a t a / G e n d a t a - j a v a . b a s e . g m k T h u N o v 2 2 1 0 : 1 5 : 3 2 2 0 1 8 - 0 8 0 0 + + + b / m a k e / g e n d a t a / G e n d a t a - j a v a . b a s e . g m k W e d D e c 1 2 2 3 : 3 1 : 4 6 2 0 1 8 - 0 8 0 0 @ @ - 5 5 , 7 + 5 5 , 7 @ @ $ ( G E N D A T A _ C U R D A T A ) : $ ( T O P D I R ) / m a k e / d a t a / c u r r e n c y / C u r r e n c y D a t a . p r o p e r t i e s $ ( B U I L D _ T O O L S _ J D K ) $ ( c a l l M a k e D i r , $ ( @ D ) ) $ ( R M ) $ @ - $ ( T O O L _ G E N E R A T E C U R R E N C Y D A T A ) - o $ @ . t m p < $ < + $ ( T O O L _ G E N E R A T E C U R R E N C Y D A T A ) - o $ @ . t m p - i $ < $ ( M V ) $ @ . t m p $ @ $ ( C H M O D ) 4 4 4 $ @
d i f f - r 4 b e f 1 9 5 7 a 1 d 8 m a k e / g e n s r c / G e n s r c B u f f e r . g m k - - - a / m a k e / g e n s r c / G e n s r c B u f f e r . g m k T h u N o v 2 2 1 0 : 1 5 : 3 2 2 0 1 8 - 0 8 0 0 + + + b / m a k e / g e n s r c / G e n s r c B u f f e r . g m k W e d D e c 1 2 2 3 : 3 1 : 4 6 2 0 1 8 - 0 8 0 0 @ @ - 2 3 0 , 7 + 2 3 0 , 8 @ @ e n d i f
$ $ ( $ 1 _ D S T ) : $ $ ( $ 1 _ D E P ) $ ( G E N S R C _ B U F F E R _ D S T ) / _ t h e . b u f f e r . d i r - $ ( T O O L _ S P P ) < $ $ ( $ 1 _ S R C ) > $ $ ( $ 1 _ O U T ) . t m p \ + $ ( R M ) $ $ ( $ 1 _ O U T ) . t m p + $ ( T O O L _ S P P ) - i $ $ ( $ 1 _ S R C ) - o $ $ ( $ 1 _ O U T ) . t m p \ - K $ $ ( $ 1 _ t y p e ) \ - K $ $ ( $ 1 _ c a t e g o r y ) \ - K $ $ ( $ 1 _ s t r e a m s ) \ @ @ - 2 6 0 , 1 2 + 2 6 1 , 1 2 @ @ i f e q ( $ $ ( $ 1 _ B I N ) , 1 ) $ ( S E D ) - e ' / # B I N / , $ $ $ $ d ' < $ $ ( $ 1 _ O U T ) > $ $ ( $ 1 _ D S T ) . t m p $ ( R M ) $ $ ( $ 1 _ O U T ) - $ $ ( $ 1 _ c h a r _ C M D ) < $ $ ( $ 1 _ S R C _ B I N ) > > $ $ ( $ 1 _ D S T ) . t m p - $ $ ( $ 1 _ s h o r t _ C M D ) < $ $ ( $ 1 _ S R C _ B I N ) > > $ $ ( $ 1 _ D S T ) . t m p - $ $ ( $ 1 _ i n t _ C M D ) < $ $ ( $ 1 _ S R C _ B I N ) > > $ $ ( $ 1 _ D S T ) . t m p - $ $ ( $ 1 _ l o n g _ C M D ) < $ $ ( $ 1 _ S R C _ B I N ) > > $ $ ( $ 1 _ D S T ) . t m p - $ $ ( $ 1 _ f l o a t _ C M D ) < $ $ ( $ 1 _ S R C _ B I N ) > > $ $ ( $ 1 _ D S T ) . t m p - $ $ ( $ 1 _ d o u b l e _ C M D ) < $ $ ( $ 1 _ S R C _ B I N ) > > $ $ ( $ 1 _ D S T ) . t m p + $ $ ( $ 1 _ c h a r _ C M D ) - i $ $ ( $ 1 _ S R C _ B I N ) - o $ $ ( $ 1 _ D S T ) . t m p + $ $ ( $ 1 _ s h o r t _ C M D ) - i $ $ ( $ 1 _ S R C _ B I N ) - o $ $ ( $ 1 _ D S T ) . t m p + $ $ ( $ 1 _ i n t _ C M D ) - i $ $ ( $ 1 _ S R C _ B I N ) - o $ $ ( $ 1 _ D S T ) . t m p + $ $ ( $ 1 _ l o n g _ C M D ) - i $ $ ( $ 1 _ S R C _ B I N ) - o $ $ ( $ 1 _ D S T ) . t m p + $ $ ( $ 1 _ f l o a t _ C M D ) - i $ $ ( $ 1 _ S R C _ B I N ) - o $ $ ( $ 1 _ D S T ) . t m p + $ $ ( $ 1 _ d o u b l e _ C M D ) - i $ $ ( $ 1 _ S R C _ B I N ) - o $ $ ( $ 1 _ D S T ) . t m p $ ( P R I N T F ) " } \ n " > > $ $ ( $ 1 _ D S T ) . t m p m v $ $ ( $ 1 _ D S T ) . t m p $ $ ( $ 1 _ D S T ) e n d i f d i f f - r 4 b e f 1 9 5 7 a 1 d 8 m a k e / g e n s r c / G e n s r c C h a r s e t C o d e r . g m k - - - a / m a k e / g e n s r c / G e n s r c C h a r s e t C o d e r . g m k T h u N o v 2 2 1 0 : 1 5 : 3 2 2 0 1 8 - 0 8 0 0 + + + b / m a k e / g e n s r c / G e n s r c C h a r s e t C o d e r . g m k W e d D e c 1 2 2 3 : 3 1 : 4 6 2 0 1 8 - 0 8 0 0 @ @ - 3 6 , 7 + 3 6 , 7 @ @ $ ( G E N S R C _ C H A R S E T C O D E R _ D S T ) / C h a r s e t D e c o d e r . j a v a : $ ( G E N S R C _ C H A R S E T C O D E R _ T E M P L A T E ) $ ( c a l l M a k e T a r g e t D i r ) $ ( R M ) $ @ . t m p - $ ( T O O L _ S P P ) < $ < > $ @ . t m p \ + $ ( T O O L _ S P P ) - i $ < - o $ @ . t m p \ - K d e c o d e r \ - D A = ' A ' \ - D a = ' a ' \ @ @ - 7 1 , 7 + 7 1 , 7 @ @ $ ( G E N S R C _ C H A R S E T C O D E R _ D S T ) / C h a r s e t E n c o d e r . j a v a : $ ( G E N S R C _ C H A R S E T C O D E R _ T E M P L A T E ) $ ( c a l l M a k e T a r g e t D i r ) $ ( R M ) $ @ . t m p - $ ( T O O L _ S P P ) < $ < > $ @ . t m p \ + $ ( T O O L _ S P P ) - i $ < - o $ @ . t m p \ - K e n c o d e r \ - D A = ' A n ' \ - D a = ' a n ' \ d i f f - r 4 b e f 1 9 5 7 a 1 d 8 m a k e / g e n s r c / G e n s r c V a r H a n d l e s . g m k - - - a / m a k e / g e n s r c / G e n s r c V a r H a n d l e s . g m k T h u N o v 2 2 1 0 : 1 5 : 3 2 2 0 1 8 - 0 8 0 0 + + + b / m a k e / g e n s r c / G e n s r c V a r H a n d l e s . g m k W e d D e c 1 2 2 3 : 3 1 : 4 6 2 0 1 8 - 0 8 0 0 @ @ - 5 9 , 8 + 5 9 , 9 @ @ $ $ ( e v a l $ 1 _ t y p e : = $ $ $ $ ( s h e l l $ ( T R ) ' [ : u p p e r : ] ' ' [ : l o w e r : ] ' < < < $ $ $ $ ( $ 1 _ T y p e ) ) ) e n d i f $ $ ( c a l l M a k e D i r , $ $ ( @ D ) ) + $ ( R M ) $ $ @ $ ( T O O L _ S P P ) - n e l - K $ $ ( $ 1 _ t y p e ) - D t y p e = $ $ ( $ 1 _ t y p e ) - D T y p e = $ $ ( $ 1 _ T y p e ) \ - $ $ ( $ 1 _ A R G S ) < $ $ < > $ $ @ + $ $ ( $ 1 _ A R G S ) - i $ $ < - o $ $ @
G E N S R C _ V A R H A N D L E S + = $ $ ( $ 1 _ F I L E N A M E ) e n d e f @ @ - 1 4 7 , 1 0 + 1 4 8 , 1 1 @ @
$ $ ( $ 1 _ F I L E N A M E ) : $ ( V A R H A N D L E S _ S R C _ D I R ) / X - V a r H a n d l e B y t e A r r a y V i e w . j a v a . t e m p l a t e $ ( B U I L D _ T O O L S _ J D K ) $ $ ( c a l l M a k e D i r , $ $ ( @ D ) ) + $ ( R M ) $ $ @ $ ( T O O L _ S P P ) - n e l - K $ $ ( $ 1 _ t y p e ) \ - D t y p e = $ $ ( $ 1 _ t y p e ) - D T y p e = $ $ ( $ 1 _ T y p e ) - D B o x T y p e = $ $ ( $ 1 _ B o x T y p e ) \ - D r a w T y p e = $ $ ( $ 1 _ r a w T y p e ) - D R a w T y p e = $ $ ( $ 1 _ R a w T y p e ) - D R a w B o x T y p e = $ $ ( $ 1 _ R a w B o x T y p e ) \ - $ $ ( $ 1 _ A R G S ) < $ $ < > $ $ @ + $ $ ( $ 1 _ A R G S ) - i $ $ < - o $ $ @
G E N S R C _ V A R H A N D L E S + = $ $ ( $ 1 _ F I L E N A M E ) e n d e f d i f f - r 4 b e f 1 9 5 7 a 1 d 8 m a k e / j d k / s r c / c l a s s e s / b u i l d / t o o l s / g e n e r a t e c u r r e n c y d a t a / G e n e r a t e C u r r e n c y D a t a . j a v a - - - a / m a k e / j d k / s r c / c l a s s e s / b u i l d / t o o l s / g e n e r a t e c u r r e n c y d a t a / G e n e r a t e C u r r e n c y D a t a . j a v a T h u N o v 2 2 1 0 : 1 5 : 3 2 2 0 1 8 - 0 8 0 0 + + + b / m a k e / j d k / s r c / c l a s s e s / b u i l d / t o o l s / g e n e r a t e c u r r e n c y d a t a / G e n e r a t e C u r r e n c y D a t a . j a v a W e d D e c 1 2 2 3 : 3 1 : 4 6 2 0 1 8 - 0 8 0 0 @ @ - 2 8 , 7 + 2 8 , 9 @ @ i m p o r t j a v a . i o . I O E x c e p t i o n ; i m p o r t j a v a . i o . F i l e N o t F o u n d E x c e p t i o n ; i m p o r t j a v a . i o . D a t a O u t p u t S t r e a m ; + i m p o r t j a v a . i o . F i l e I n p u t S t r e a m ; i m p o r t j a v a . i o . F i l e O u t p u t S t r e a m ; + i m p o r t j a v a . i o . I n p u t S t r e a m ; i m p o r t j a v a . t e x t . S i m p l e D a t e F o r m a t ; i m p o r t j a v a . u t i l . D a t e ; i m p o r t j a v a . u t i l . H a s h M a p ; @ @ - 1 3 4 , 1 9 + 1 3 6 , 4 4 @ @ p r i v a t e s t a t i c S t r i n g c u r r e n c i e s W i t h M i n o r U n i t s U n d e f i n e d ;
p u b l i c s t a t i c v o i d m a i n ( S t r i n g [ ] a r g s ) {

@ @ - 1 5 4 , 7 + 1 8 1 , 7 @ @ f o r m a t . s e t L e n i e n t ( f a l s e ) ;
t r y { - r e a d I n p u t ( ) ; + r e a d I n p u t ( i n ) ; b u i l d M a i n A n d S p e c i a l C a s e T a b l e s ( ) ; b u i l d O t h e r T a b l e s ( ) ; w r i t e O u t p u t ( ) ; @ @ - 1 6 7 , 9 + 1 9 4 , 9 @ @ } }
- p r i v a t e s t a t i c v o i d r e a d I n p u t ( ) t h r o w s I O E x c e p t i o n { + p r i v a t e s t a t i c v o i d r e a d I n p u t ( I n p u t S t r e a m i n ) t h r o w s I O E x c e p t i o n { c u r r e n c y D a t a = n e w P r o p e r t i e s ( ) ; - c u r r e n c y D a t a . l o a d ( S y s t e m . i n ) ; + c u r r e n c y D a t a . l o a d ( i n ) ;
/ / i n i t i a l i z e o t h e r l o o k u p s t r i n g s f o r m a t V e r s i o n = ( S t r i n g ) c u r r e n c y D a t a . g e t ( " f o r m a t V e r s i o n " ) ; d i f f - r 4 b e f 1 9 5 7 a 1 d 8 m a k e / j d k / s r c / c l a s s e s / b u i l d / t o o l s / s p p / S p p . j a v a - - - a / m a k e / j d k / s r c / c l a s s e s / b u i l d / t o o l s / s p p / S p p . j a v a T h u N o v 2 2 1 0 : 1 5 : 3 2 2 0 1 8 - 0 8 0 0 + + + b / m a k e / j d k / s r c / c l a s s e s / b u i l d / t o o l s / s p p / S p p . j a v a W e d D e c 1 2 2 3 : 3 1 : 4 6 2 0 1 8 - 0 8 0 0 @ @ - 2 5 , 6 + 2 5 , 8 @ @
p a c k a g e b u i l d . t o o l s . s p p ;
+ i m p o r t j a v a . i o . F i l e I n p u t S t r e a m ; + i m p o r t j a v a . i o . F i l e O u t p u t S t r e a m ; i m p o r t j a v a . u t i l . * ; i m p o r t j a v a . u t i l . r e g e x . * ;
@ @ - 6 9 , 6 + 7 1 , 8 @ @ S e t < S t r i n g > k e y s = n e w H a s h S e t < > ( ) ; b o o l e a n b e = f a l s e ; b o o l e a n e l = t r u e ; + S t r i n g i n p u t F i l e = n u l l ; + S t r i n g o u t p u t F i l e = n u l l ;
f o r ( S t r i n g a r g : a r g s ) { i f ( a r g . s t a r t s W i t h ( " - D " ) ) { @ @ - 7 6 , 6 + 8 0 , 1 0 @ @ v a r s . p u t ( a r g . s u b s t r i n g ( 2 , i ) , a r g . s u b s t r i n g ( i + 1 ) ) ; } e l s e i f ( a r g . s t a r t s W i t h ( " - K " ) ) { k e y s . a d d ( a r g . s u b s t r i n g ( 2 ) ) ; + } e l s e i f ( a r g . s t a r t s W i t h ( " - i " ) ) { + i n p u t F i l e = a r g . s u b s t r i n g ( 2 ) ; + } e l s e i f ( a r g . s t a r t s W i t h ( " - o " ) ) { + o u t p u t F i l e = a r g . s u b s t r i n g ( 2 ) ; } e l s e i f ( " - b e " . e q u a l s ( a r g ) ) { b e = t r u e ; } e l s e i f ( " - n e l " . e q u a l s ( a r g ) ) { @ @ - 8 7 , 1 1 + 9 5 , 1 1 @ @ }
S t r i n g B u f f e r o u t = n e w S t r i n g B u f f e r ( ) ; - n e w S p p ( ) . s p p ( n e w S c a n n e r ( S y s t e m . i n ) , + n e w S p p ( ) . s p p ( n e w S c a n n e r ( n e w F i l e I n p u t S t r e a m ( i n p u t F i l e ) ) , o u t , " " , k e y s , v a r s , b e , e l , f a l s e ) ; - S y s t e m . o u t . p r i n t ( o u t . t o S t r i n g ( ) ) ; + n e w F i l e O u t p u t S t r e a m ( o u t p u t F i l e , t r u e ) . w r i t e ( o u t . t o S t r i n g ( ) . g e t B y t e s ( ) ) ; }
s t a t i c f i n a l S t r i n g L N S E P = S y s t e m . g e t P r o p e r t y ( " l i n e . s e p a r a t o r " ) ; d i f f - r 4 b e f 1 9 5 7 a 1 d 8 m a k e / s c r i p t s / w i n d o w s S h o r t N a m e . b a t - - - / d e v / n u l l T h u J a n 0 1 0 0 : 0 0 : 0 0 1 9 7 0 + 0 0 0 0 + + + b / m a k e / s c r i p t s / w i n d o w s S h o r t N a m e . b a t W e d D e c 1 2 2 3 : 3 1 : 4 6 2 0 1 8 - 0 8 0 0 @ @ - 0 , 0 + 1 , 2 4 @ @ + @ e c h o o f f + R E M + R E M C o p y r i g h t ( c ) 2 0 1 8 , O r a c l e a n d / o r i t s a f f i l i a t e s . A l l r i g h t s r e s e r v e d . + R E M D O N O T A L T E R O R R E M O V E C O P Y R I G H T N O T I C E S O R T H I S F I L E H E A D E R . + R E M + R E M T h i s c o d e i s f r e e s o f t w a r e ; y o u c a n r e d i s t r i b u t e i t a n d / o r m o d i f y i t + R E M u n d e r t h e t e r m s o f t h e G N U G e n e r a l P u b l i c L i c e n s e v e r s i o n 2 o n l y , a s + R E M p u b l i s h e d b y t h e F r e e S o f t w a r e F o u n d a t i o n . + R E M + R E M T h i s c o d e i s d i s t r i b u t e d i n t h e h o p e t h a t i t w i l l b e u s e f u l , b u t W I T H O U T + R E M A N Y W A R R A N T Y ; w i t h o u t e v e n t h e i m p l i e d w a r r a n t y o f M E R C H A N T A B I L I T Y o r + R E M F I T N E S S F O R A P A R T I C U L A R P U R P O S E . S e e t h e G N U G e n e r a l P u b l i c L i c e n s e + R E M v e r s i o n 2 f o r m o r e d e t a i l s ( a c o p y i s i n c l u d e d i n t h e L I C E N S E f i l e t h a t + R E M a c c o m p a n i e d t h i s c o d e ) . + R E M + R E M Y o u s h o u l d h a v e r e c e i v e d a c o p y o f t h e G N U G e n e r a l P u b l i c L i c e n s e v e r s i o n + R E M 2 a l o n g w i t h t h i s w o r k ; i f n o t , w r i t e t o t h e F r e e S o f t w a r e F o u n d a t i o n , + R E M I n c . , 5 1 F r a n k l i n S t , F i f t h F l o o r , B o s t o n , M A 0 2 1 1 0 - 1 3 0 1 U S A . + R E M + R E M P l e a s e c o n t a c t O r a c l e , 5 0 0 O r a c l e P a r k w a y , R e d w o o d S h o r e s , C A 9 4 0 6 5 U S A + R E M o r v i s i t w w w . o r a c l e . c o m i f y o u n e e d a d d i t i o n a l i n f o r m a t i o n o r h a v e a n y + R E M q u e s t i o n s . + R E M + i f ' % 1 ' N E Q ' ' e c h o % ~ s 1 d i f f - r 4 b e f 1 9 5 7 a 1 d 8 m a k e / s r c / n a t i v e / f i x p a t h . c - - - a / m a k e / s r c / n a t i v e / f i x p a t h . c T h u N o v 2 2 1 0 : 1 5 : 3 2 2 0 1 8 - 0 8 0 0 + + + b / m a k e / s r c / n a t i v e / f i x p a t h . c W e d D e c 1 2 2 3 : 3 1 : 4 6 2 0 1 8 - 0 8 0 0 @ @ - 2 4 , 6 + 2 4 , 7 @ @ * /
# i n c l u d e < W i n d o w s . h > + # i n c l u d e < s t d b o o l . h > # i n c l u d e < i o . h > # i n c l u d e < s t d i o . h > # i n c l u d e < s t r i n g . h > @ @ - 5 3 , 2 5 + 5 4 , 1 6 @ @ }
/ * - * T e s t i f p o s p o i n t s t o / c y g d r i v e / _ / w h e r e _ c a n + * T e s t i f p o s p o i n t s t o / p r e f i x / _ / w h e r e _ c a n * b e a n y c h a r a c t e r . * / - i n t i s _ c y g d r i v e _ h e r e ( i n t p o s , c h a r c o n s t * i n , i n t l e n ) + i n t i s _ p r e f i x _ h e r e ( i n t p o s , c h a r c o n s t * i n , i n t l e n , c o n s t c h a r * p r e f i x ) { - / / L e n g t h o f / c y g d r i v e / c / i s 1 2 - i f ( p o s + 1 2 > l e n ) r e t u r n 0 ; - i f ( i n [ p o s + 1 1 ] = = ' / ' & & - i n [ p o s + 9 ] = = ' / ' & & - i n [ p o s + 8 ] = = ' e ' & & - i n [ p o s + 7 ] = = ' v ' & & - i n [ p o s + 6 ] = = ' i ' & & - i n [ p o s + 5 ] = = ' r ' & & - i n [ p o s + 4 ] = = ' d ' & & - i n [ p o s + 3 ] = = ' g ' & & - i n [ p o s + 2 ] = = ' y ' & & - i n [ p o s + 1 ] = = ' c ' & & - i n [ p o s + 0 ] = = ' / ' ) { - r e t u r n 1 ; + / / L e n g t h o f c / i s 2 + i n t p r e f i x _ s i z e = s t r l e n ( p r e f i x ) ; + i f ( p o s + p r e f i x _ s i z e + 2 > l e n ) r e t u r n 0 ; + i f ( i n [ p o s + p r e f i x _ s i z e + 1 ] = = ' / ' ) { + r e t u r n s t r n c m p ( i n + p o s , p r e f i x , p r e f i x _ s i z e ) = = 0 ; } r e t u r n 0 ; } @ @ - 9 3 , 7 + 8 5 , 7 @ @ }
f o r ( i = 0 , j = 0 ; i < l e n ; ) { - i f ( i s _ c y g d r i v e _ h e r e ( i , i n , l e n ) ) { + i f ( i s _ p r e f i x _ h e r e ( i , i n , l e n , " / c y g d r i v e / " ) ) { o u t [ j + + ] = i n [ i + 1 0 ] ; o u t [ j + + ] = ' : ' ; i + = 1 1 ; @ @ - 1 9 6 , 7 + 1 8 8 , 3 9 @ @ r e t u r n s t r ; }
+ / * + * R e p l a c e / m n t / _ / w i t h _ : / + * W o r k s i n p l a c e s i n c e d r i v e l e t t e r i s a l w a y s + * s h o r t e r t h a n / m n t / + * / + c h a r * r e p l a c e _ c y g d r i v e _ w s l ( c h a r c o n s t * i n ) + { + s i z e _ t l e n = s t r l e n ( i n ) ; + c h a r * o u t = ( c h a r * ) m a l l o c ( l e n + 1 ) ; + i n t i , j ; + + i f ( l e n < 7 ) { + m e m m o v e ( o u t , i n , l e n + 1 ) ; + r e t u r n o u t ; + } + + f o r ( i = 0 , j = 0 ; i < l e n ; ) { + i f ( i s _ p r e f i x _ h e r e ( i , i n , l e n , " / m n t / " ) ) { + o u t [ j + + ] = i n [ i + 5 ] ; + o u t [ j + + ] = ' : ' ; + i + = 6 ; + } e l s e { + o u t [ j ] = i n [ i ] ; + i + + ; + j + + ; + } + } + o u t [ j ] = ' \ 0 ' ; + r e t u r n o u t ; + } + c h a r * ( * r e p l a c e _ c y g d r i v e ) ( c h a r c o n s t * i n ) = N U L L ; + b o o l d e b u g _ f i x p a t h = f a l s e ;
c h a r * f i l e s _ t o _ d e l e t e [ 1 0 2 4 ] ; i n t n u m _ f i l e s _ t o _ d e l e t e = 0 ; @ @ - 2 5 0 , 1 1 + 2 7 4 , 1 1 @ @ a p p e n d ( & b u f f e r , & b u f l e n , & u s e d , b l o c k , b l o c k l e n ) ; } b u f f e r [ u s e d ] = 0 ; - i f ( g e t e n v ( " D E B U G _ F I X P A T H " ) ! = N U L L ) { + i f ( d e b u g _ f i x p a t h ) { f p r i n t f ( s t d e r r , " f i x p a t h i n p u t f r o m @ - f i l e % s : % s \ n " , & i n [ 1 ] , b u f f e r ) ; } f i x e d = r e p l a c e _ c y g d r i v e ( b u f f e r ) ; - i f ( g e t e n v ( " D E B U G _ F I X P A T H " ) ! = N U L L ) { + i f ( d e b u g _ f i x p a t h ) { f p r i n t f ( s t d e r r , " f i x p a t h c o n v e r t e d t o @ - f i l e % s i s : % s \ n " , n a m e , f i x e d ) ; } f w r i t e ( f i x e d , s t r l e n ( f i x e d ) , 1 , a t o u t ) ; @ @ - 3 6 3 , 2 7 + 3 8 7 , 3 4 @ @ B O O L p r o c e s s I n h e r i t H a n d l e s = T R U E ; B O O L w a i t F o r C h i l d = T R U E ;
- i f ( a r g c < 2 | | a r g v [ 1 ] [ 0 ] ! = ' - ' | | ( a r g v [ 1 ] [ 1 ] ! = ' c ' & & a r g v [ 1 ] [ 1 ] ! = ' m ' ) ) { - f p r i n t f ( s t d e r r , " U s a g e : f i x p a t h - c | m < p a t h @ p a t h @ . . . > [ - - d e t a c h ] / c y g d r i v e / c / W I N D O W S / n o t e p a d . e x e [ / c y g d r i v e / c / x / t e s t . t x t | @ / c y g d r i v e / c / x / a t f i l e ] \ n " ) ; + d e b u g _ f i x p a t h = ( g e t e n v ( " D E B U G _ F I X P A T H " ) ! = N U L L ) ; + + i f ( a r g c < 2 | | a r g v [ 1 ] [ 0 ] ! = ' - ' | | ( a r g v [ 1 ] [ 1 ] ! = ' c ' & & a r g v [ 1 ] [ 1 ] ! = ' m ' & & a r g v [ 1 ] [ 1 ] ! = ' w ' ) ) { + f p r i n t f ( s t d e r r , " U s a g e : f i x p a t h - c | m | w < p a t h @ p a t h @ . . . > [ - - d e t a c h ] / c y g d r i v e / c / W I N D O W S / n o t e p a d . e x e [ / c y g d r i v e / c / x / t e s t . t x t | @ / c y g d r i v e / c / x / a t f i l e ] \ n " ) ; e x i t ( 0 ) ; }
- i f ( g e t e n v ( " D E B U G _ F I X P A T H " ) ! = N U L L ) { + i f ( d e b u g _ f i x p a t h ) { c h a r c o n s t * c m d l i n e = G e t C o m m a n d L i n e ( ) ; f p r i n t f ( s t d e r r , " f i x p a t h i n p u t l i n e > % s < \ n " , s t r s t r ( c m d l i n e , a r g v [ 1 ] ) ) ; }
i f ( a r g v [ 1 ] [ 1 ] = = ' c ' & & a r g v [ 1 ] [ 2 ] = = ' \ 0 ' ) { - i f ( g e t e n v ( " D E B U G _ F I X P A T H " ) ! = N U L L ) { + i f ( d e b u g _ f i x p a t h ) { f p r i n t f ( s t d e r r , " f i x p a t h u s i n g c y g w i n m o d e \ n " ) ; } r e p l a c e _ c y g d r i v e = r e p l a c e _ c y g d r i v e _ c y g w i n ; } e l s e i f ( a r g v [ 1 ] [ 1 ] = = ' m ' ) { - i f ( g e t e n v ( " D E B U G _ F I X P A T H " ) ! = N U L L ) { + i f ( d e b u g _ f i x p a t h ) { f p r i n t f ( s t d e r r , " f i x p a t h u s i n g m s y s m o d e , w i t h p a t h l i s t : % s \ n " , & a r g v [ 1 ] [ 2 ] ) ; } s e t u p _ m s y s _ p a t h _ l i s t ( a r g v [ 1 ] ) ; r e p l a c e _ c y g d r i v e = r e p l a c e _ c y g d r i v e _ m s y s ; + } e l s e i f ( a r g v [ 1 ] [ 1 ] = = ' w ' ) { + i f ( d e b u g _ f i x p a t h ) { + f p r i n t f ( s t d e r r , " f i x p a t h u s i n g w s l m o d e , w i t h p a t h l i s t : % s \ n " , & a r g v [ 1 ] [ 2 ] ) ; + } + r e p l a c e _ c y g d r i v e = r e p l a c e _ c y g d r i v e _ w s l ; } e l s e { f p r i n t f ( s t d e r r , " f i x p a t h U n k n o w n m o d e : % s \ n " , a r g v [ 1 ] ) ; e x i t ( - 1 ) ; @ @ - 3 9 1 , 7 + 4 2 2 , 7 @ @
i f ( a r g v [ 2 ] [ 0 ] = = ' - ' ) { i f ( s t r c m p ( a r g v [ 2 ] , " - - d e t a c h " ) = = 0 ) { - i f ( g e t e n v ( " D E B U G _ F I X P A T H " ) ! = N U L L ) { + i f ( d e b u g _ f i x p a t h ) { f p r i n t f ( s t d e r r , " f i x p a t h i n d e t a c h e d m o d e \ n " ) ; } p r o c e s s F l a g s | = D E T A C H E D _ P R O C E S S ; @ @ - 4 1 7 , 7 + 4 4 8 , 7 @ @ v a r [ v a r _ l e n - 1 ] = ' \ 0 ' ; s t r u p r ( v a r ) ;
- i f ( g e t e n v ( " D E B U G _ F I X P A T H " ) ! = N U L L ) { + i f ( d e b u g _ f i x p a t h ) { f p r i n t f ( s t d e r r , " f i x p a t h s e t t i n g v a r > % s < t o > % s < \ n " , v a r , v a l ) ; }
@ @ - 4 8 0 , 1 2 + 5 1 1 , 1 2 @ @ } * c u r r e n t = ' \ 0 ' ;
- i f ( g e t e n v ( " D E B U G _ F I X P A T H " ) ! = N U L L ) { + i f ( d e b u g _ f i x p a t h ) { f p r i n t f ( s t d e r r , " f i x p a t h c o n v e r t e d l i n e > % s < \ n " , l i n e ) ; }
i f ( c m d = = a r g c ) { - i f ( g e t e n v ( " D E B U G _ F I X P A T H " ) ! = N U L L ) { + i f ( d e b u g _ f i x p a t h ) { f p r i n t f ( s t d e r r , " f i x p a t h n o c o m m a n d p r o v i d e d ! \ n " ) ; } e x i t ( 0 ) ; @ @ - 5 1 8 , 7 + 5 4 9 , 7 @ @ W a i t F o r S i n g l e O b j e c t ( p i . h P r o c e s s , I N F I N I T E ) ; G e t E x i t C o d e P r o c e s s ( p i . h P r o c e s s , & e x i t C o d e ) ;
- i f ( g e t e n v ( " D E B U G _ F I X P A T H " ) ! = N U L L ) { + i f ( d e b u g _ f i x p a t h ) { f o r ( i = 0 ; i < n u m _ f i l e s _ t o _ d e l e t e ; + + i ) { f p r i n t f ( s t d e r r , " f i x p a t h N o t d e l e t i n g t e m p o r a r y f i l e % s \ n " , f i l e s _ t o _ d e l e t e [ i ] ) ; @ @ - 5 3 0 , 1 3 + 5 6 1 , 1 3 @ @ }
i f ( e x i t C o d e ! = 0 ) { - i f ( g e t e n v ( " D E B U G _ F I X P A T H " ) ! = N U L L ) { + i f ( d e b u g _ f i x p a t h ) { f p r i n t f ( s t d e r r , " f i x p a t h e x i t c o d e % d \ n " , e x i t C o d e ) ; } } } e l s e { - i f ( g e t e n v ( " D E B U G _ F I X P A T H " ) ! = N U L L ) { + i f ( d e b u g _ f i x p a t h ) { f p r i n t f ( s t d e r r , " f i x p a t h N o t w a i t i n g f o r c h i l d p r o c e s s " ) ; } }


More information about the build-dev mailing list