Peter Reilly wrote:
On Tue, Feb 26, 2008 at 3:07 PM, Steve Loughran <[EMAIL PROTECTED]> wrote:
Steve Loughran wrote:
 > Kevin Jackson wrote:
 >> Hi,
 >>
 >> As I mentioned previously (although I'm a couple of days late).
 >>
 >> I'd like to release a beta of 1.7.1 within the next two weeks.
 >>
 >> The current 1.7.1 trunk is now locked for further changes (99.9% test
 >> completion on the most troublesome platform (windows))
 >>
 >
 >
 >  The beta of 1.7.1 is ready:
 >  [x] yes (+1)
 >  [ ] no (you missed something...)
 >
 > That said, I want to look at why it doesn't work on a network mounted
 > windows drive. I'll do that this afternoon.

 gosh, this is a fun bug.

 when you run ant on a remote share, we dont get the right path to the
 lancher jar, so things go horribly wrong

 Launcher JAR: C:\morzine\slo\Java\Apache\ant\lib\ant-launcher.jar
 launcher Directory: C:\morzine\slo\Java\Apache\ant\lib

 but I factored out the test and it works; we are creating the correct path.

    public void testAntOnRemoteShare() throws Throwable {
         String launcher =
 "//morzine/slo/Java/Apache/ant/lib/ant-launcher.jar";
         String jarURI
                 = "jar:file:"+ launcher
 +"!/org/apache/tools/ant/launch/Launcher.class";
         String resolved=Locator.fromJarURI(jarURI);
         assertResolved(jarURI,launcher,resolved,true);
     }

 Either we're pasting in the CWD in front, or new File() is doing it for us.
Does this happen in ant 1.7.0 ?
If it does, this means that this bug should be not a reason to hold up
ant 1.7.1.

the bug has been around since 1.7.alpha; 2007-04

in 1.7.0 the failure is as follows:

 \\PC03\jclasses\lib\ant-1.7.0.jar
on the classpath.

Ant is failing while trying to create the URI of the file
java.lang.IllegalArgumentException: URI has an authority component
       at java.io.File.<init>(Unknown Source)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
       at java.lang.reflect.Constructor.newInstance(Unknown Source)
       at org.apache.tools.ant.launch.Locator.fromURI(Locator.java:165)
at org.apache.tools.ant.launch.Locator.getResourceSource(Locator.java:119) at org.apache.tools.ant.launch.Locator.getClassSource(Locator.java:90)
       at org.apache.tools.ant.Project.setAntLib(Project.java:313)
       at org.apache.tools.ant.Project.initProperties(Project.java:309)
       at org.apache.tools.ant.Project.init(Project.java:295)
       at org.apache.tools.ant.Main.runBuild(Main.java:663)
       at org.apache.tools.ant.Main.startAnt(Main.java:199)
       at org.apache.tools.ant.Main.start(Main.java:161)
       at org.apache.tools.ant.Main.main(Main.java:250)

We thought we'd fixed it, by switching to the java1.3 URI stuff everywhere, indeed, 1.7.1 marks it as fixed

* Regression in Locator: running Ant off a network share does not work:
  message "URI has authority component" appears
  Bugzilla report 42275


but we just found a bug this one was hiding; we've moved the problem.

I have just fixed it incidentally, and added a new secret launch diagnostics feature to ant that turns detailed logging in the launcher on:

C:\>\\morzine\slo\Java\Apache\ant\bin\ant.bat --launchdiag
Launcher JAR= "\\morzine\slo\Java\Apache\ant\lib\ant-launcher.jar"
java.home= "C:\Java\jre"
Launcher JAR directory= "\\morzine\slo\Java\Apache\ant\lib"
setting "ant.library.dir" to "\\morzine\slo\Java\Apache\ant\lib"
Unable to locate tools.jar. Expected to find it in C:\Java\lib\tools.jar
tools.jar= "null"
setting "java.class.path" to "\\morzine\slo\Java\Apache\ant\bin\..\lib\ant-laun
her.jar;\\morzine\slo\Java\Apache\ant\lib\ant.jar;\\morzine\slo\Java\Apache\ant
lib\xml-apis.jar;\\morzine\slo\Java\Apache\ant\lib\log4j-1.2.13.jar;\\morzine\s
o\Java\Apache\ant\lib\commons-logging-1.0.4.jar;\\morzine\slo\Java\Apache\ant\l
b\commons-logging-1.1.jar;\\morzine\slo\Java\Apache\ant\lib\xercesImpl.jar;\\mo
zine\slo\Java\Apache\ant\lib\jython-2.1.jar;\\morzine\slo\Java\Apache\ant\lib\j
uby-0.8.3.jar;\\morzine\slo\Java\Apache\ant\lib\resolver.jar;\\morzine\slo\Java
Apache\ant\lib\cpptasks.jar;\\morzine\slo\Java\Apache\ant\lib\ant-commons-net.j
r;\\morzine\slo\Java\Apache\ant\lib\junit-3.8.2.jar;\\morzine\slo\Java\Apache\a
t\lib\activation-1.0.2.jar;\\morzine\slo\Java\Apache\ant\lib\ant-junit.jar;\\mo
zine\slo\Java\Apache\ant\lib\ant-testutil.jar;\\morzine\slo\Java\Apache\ant\lib
ant-apache-regexp.jar;\\morzine\slo\Java\Apache\ant\lib\jakarta-regexp-1.2.jar;
\morzine\slo\Java\Apache\ant\lib\commons-net-1.4.0.jar;\\morzine\slo\Java\Apach
\ant\lib\jsvn-0.9-dev.jar;\\morzine\slo\Java\Apache\ant\lib\logkit-1.0.1.jar;\\
orzine\slo\Java\Apache\ant\lib\ant-apache-bsf.jar;\\morzine\slo\Java\Apache\ant
lib\ant-antlr.jar;\\morzine\slo\Java\Apache\ant\lib\ant-swing.jar;\\morzine\slo
Java\Apache\ant\lib\xml-resolver-1.1.jar;\\morzine\slo\Java\Apache\ant\lib\whic
-1.0.jar;\\morzine\slo\Java\Apache\ant\lib\ant-apache-oro.jar;\\morzine\slo\Jav
\Apache\ant\lib\ant-commons-logging.jar;\\morzine\slo\Java\Apache\ant\lib\antlr
2.7.2.jar;\\morzine\slo\Java\Apache\ant\lib\regexp-1.3.jar;\\morzine\slo\Java\A
ache\ant\lib\ant-apache-log4j.jar;\\morzine\slo\Java\Apache\ant\lib\commons-col
ections.jar;\\morzine\slo\Java\Apache\ant\lib\bcel-5.1.jar;\\morzine\slo\Java\A
ache\ant\lib\ant-jmf.jar;\\morzine\slo\Java\Apache\ant\lib\checkstyle-2.3.jar;\
morzine\slo\Java\Apache\ant\lib\ant-contrib.jar;\\morzine\slo\Java\Apache\ant\l
b\ant-jdepend.jar;\\morzine\slo\Java\Apache\ant\lib\avalon-framework-4.1.3.jar;
\morzine\slo\Java\Apache\ant\lib\jmxri.jar;\\morzine\slo\Java\Apache\ant\lib\an
-javamail.jar;\\morzine\slo\Java\Apache\ant\lib\xalan-2.7.0.jar;\\morzine\slo\J
va\Apache\ant\lib\commons-modeler.jar;\\morzine\slo\Java\Apache\ant\lib\ant-ant
nit-1.0.jar;\\morzine\slo\Java\Apache\ant\lib\ant-apache-bcel.jar;\\morzine\slo
Java\Apache\ant\lib\ant-launcher.jar;\\morzine\slo\Java\Apache\ant\lib\commons-
igester.jar;\\morzine\slo\Java\Apache\ant\lib\Tidy.jar;\\morzine\slo\Java\Apach
\ant\lib\ant-trax.jar;\\morzine\slo\Java\Apache\ant\lib\maven-artifact-ant-2.0.
-dep.jar;\\morzine\slo\Java\Apache\ant\lib\jsch-0.1.27.jar;\\morzine\slo\Java\A
ache\ant\lib\ant-jsch.jar;\\morzine\slo\Java\Apache\ant\lib\jakarta-oro-2.0.4.j
r;\\morzine\slo\Java\Apache\ant\lib\jdepend-2.7.jar;\\morzine\slo\Java\Apache\a
t\lib\commons-beanutils.jar;\\morzine\slo\Java\Apache\ant\lib\mail.jar;\\morzin
\slo\Java\Apache\ant\lib\bsh-2.0b4.jar;\\morzine\slo\Java\Apache\ant\lib\ant-ap
che-resolver.jar;\\morzine\slo\Java\Apache\ant\lib\oro-2.0.8.jar;\\morzine\slo\
ava\Apache\ant\lib\ant-nodeps.jar"
Buildfile: build.xml does not exist!
Build failed


This --launchdiags is for extra low-level, "let's debug the launcher" work, not something we need to cover in any detail, except maybe in the wiki.

The changes are in the 1.8 branch, its up to others to decide if they should go into the 1.7.1 beta. Apart from the logging and a bit of refactoring, the only change that fixes it is this:

          path = decodeUri(uri);
            //consider adding the current directory. This is not done when
            //the path is a UNC name
            String cwd = System.getProperty("user.dir");
            int posi = cwd.indexOf(':');
boolean pathStartsWithFileSeparator = path.startsWith(File.separator); boolean pathStartsWithUNC = path.startsWith("" + File.separator + File.separator); if ((posi > 0) && pathStartsWithFileSeparator && !pathStartsWithUNC) {
                path = cwd.substring(0, posi + 1) + path;
            }

We dont prepend the cwd on a path if the path starts with a UNC. This was only something we did on windows (the indexof ':') tests for that.

--
Steve Loughran                  http://www.1060.org/blogxter/publish/5
Author: Ant in Action           http://antbook.org/

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to