Andy

So making it POSIX compliant was actually relatively easy and is now
committed.

I haven't attempted to do anything wrt class path caching yet

Rob

On 13/03/2014 09:41, "Rob Vesse" <[email protected]> wrote:

>Andy
>
>The problem is for me on OS X the current methodology is completely
>broken, without my changes make_classpath_mvn generates the following:
>
>/Users/rvesse/Documents/apache-jena/trunk/jena-arq//classes:/Users/rvesse/
>D
>ocuments/apache-jena/trunk/jena-arq//../jena-core/classes:/Users/rvesse/.m
>2
>/repository/src/main/java:/Users/rvesse/.m2/repository/src/main/resources:
>/
>Users/rvesse/.m2/repository/src/test/java:/Users/rvesse/.m2/repository/src
>/
>test/resources:/Users/rvesse/.m2/repository/org.eclipse.jdt.launching.JRE_
>C
>ONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-
>1
>.6:/Users/rvesse/.m2/repository/org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER
>:
>/Users/rvesse/.m2/repository/target/classes
>
>Which doesn't even really contain valid locations for the Jena class files
>let alone for any dependencies.
>
>
>I appreciate point 1 that dependency:build-classpath is slow (what isn't
>with maven?)  The caching approach may be useful, I assume you write out
>to a temporary file since you can't rely on exported variables persisting
>since users are unlikely to source the scripts?
>
>Re: point 2 what are the dash equivalents of what I've done then? I don't
>know what the syntax differences between bash and dash are nor do I have
>an ubuntu machine/VM to easily test on (well I could spin up an EC2 VM but
>not knowing dash wouldn't help me that much)
>
>Rob
>
>On 12/03/2014 18:04, "Andy Seaborne" <[email protected]> wrote:
>
>>Rob - two problems:
>>
>>1/ There was reason behind the madness :-)  dependency:build-classpath
>>is very slow.
>>
>>Startup goes from under 1s to 7s on my machine for simple:
>>
>>    time bin/sparql --version
>>
>>That's why there's the .classpath hack
>>
>>Fuseki keeps a cache of the classpath calculated - maybe that will work
>>for both of us.
>>
>>2/  /bin/sh does not have [[, pushd and other things
>>They are bashisms.
>>
>>On Ubuntu sh is a strict Bourne shall (dash to be exact)
>>      
>>      Andy
>>
>>On 12/03/14 15:13, [email protected] wrote:
>>> Author: rvesse
>>> Date: Wed Mar 12 15:13:28 2014
>>> New Revision: 1576775
>>>
>>> URL: http://svn.apache.org/r1576775
>>> Log:
>>> Improve make_classpath_mvn to take advantage of mvn and the
>>>dependency:build-classpath goal where possible instead of relying on the
>>>.classpath file search approach which can fail horribly depending on
>>>what is in the .classpath file (certainly it fails horribly on OS X)
>>>
>>> Modified:
>>>      jena/trunk/jena-arq/bin/make_classpath_mvn
>>>
>>> Modified: jena/trunk/jena-arq/bin/make_classpath_mvn
>>> URL: 
>>>http://svn.apache.org/viewvc/jena/trunk/jena-arq/bin/make_classpath_mvn?
>>>r
>>>ev=1576775&r1=1576774&r2=1576775&view=diff
>>> 
>>>========================================================================
>>>=
>>>=====
>>> --- jena/trunk/jena-arq/bin/make_classpath_mvn (original)
>>> +++ jena/trunk/jena-arq/bin/make_classpath_mvn Wed Mar 12 15:13:28 2014
>>> @@ -17,30 +17,39 @@
>>>
>>>   DIRROOT="$1"
>>>
>>> -if [ "$DIRROOT" = "" ]
>>> -then
>>> +if [ "$DIRROOT" = "" ]; then
>>>       echo "No directory given" 1>&2
>>>       exit 1
>>> -    fi
>>> -
>>> -M2_REPO="${M2_REPO:-$HOME/.m2/repository}" ;
>>> -X=$(perl -ne 'next unless /\spath="M2_REPO([^"]*)"/s ; print
>>>"$1","\n"' $DIRROOT/.classpath)
>>> +fi
>>>
>>>   SEP=':'
>>>   CP=${CP:-}
>>>
>>> -for x in $X
>>> -do
>>> -    [ "$CP" != "" ] && CP="${CP}${SEP}"
>>> -    CP="$CP$M2_REPO$x"
>>> -done
>>> +which mvn > /dev/null
>>> +HAS_MAVEN=$?
>>> +if [[ -e "$DIRROOT/pom.xml" && $HAS_MAVEN -eq 0 ]]; then
>>> +    # Take advantage of maven dependency plugin
>>> +    MVN_OUTPUT_PATTERN="(^\[INFO\])"
>>> +    pushd $DIRROOT >/dev/null
>>> +    MVN_CP=`mvn dependency:build-classpath | egrep -v
>>>${MVN_OUTPUT_PATTERN}`
>>> +    popd >/dev/null
>>> +    CP="${CP}${SEP}${MVN_CP}"
>>> +else
>>> +    # Use the crude method
>>> +    M2_REPO="${M2_REPO:-$HOME/.m2/repository/}" ;
>>> +    X=$(perl -ne 'next unless /\spath="$M2_REPO([^"]*)"/s ; print
>>>"$1","\n"' $DIRROOT/.classpath)
>>> +
>>> +    for x in $X
>>> +    do
>>> +      [ "$CP" != "" ] && CP="${CP}${SEP}"
>>> +      CP="$CP$M2_REPO$x"
>>> +    done
>>> +fi
>>>
>>> -if [ -e "$DIRROOT/classes" ]
>>> -then
>>> +if [ -e "$DIRROOT/classes" ]; then
>>>       CP="$DIRROOT/../jena-core/classes${SEP}$CP"
>>>       CP="$DIRROOT/classes${SEP}$CP"
>>> -elif [ -e "$DIRROOT/target/classes" ]
>>> -then
>>> +elif [ -e "$DIRROOT/target/classes" ]; then
>>>       CP="$DIRROOT/target/classes{SEP}$CP"
>>>   fi
>>>
>>>
>>>
>>
>
>
>
>




Reply via email to